AppContext.SetSwitch(String, Boolean) 메서드

정의

스위치의 값을 설정합니다.

public:
 static void SetSwitch(System::String ^ switchName, bool isEnabled);
public static void SetSwitch(string switchName, bool isEnabled);
static member SetSwitch : string * bool -> unit
Public Shared Sub SetSwitch (switchName As String, isEnabled As Boolean)

매개 변수

switchName
String

스위치의 이름입니다.

isEnabled
Boolean

스위치의 값입니다.

예외

switchNamenull입니다.

switchNameEmpty입니다.

예제

다음 코드 줄은 레거시 동작을 Switch.AmazingLib.ThrowOnException사용하도록 설정하는 스위치를 설정합니다true. 그런 다음 라이브러리는 라이브러리 소비자가 메서드를 호출 TryGetSwitch 하여 스위치 값을 설정했는지 여부를 확인할 수 있습니다.

AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true)
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", True)

설명

AppContext 클래스를 사용하면 라이브러리 작성자가 사용자에게 새로운 기능을 위한 균일한 옵트아웃 메커니즘을 제공할 수 있습니다. 옵트아웃 요청을 전달하기 위해 구성 요소 간에 느슨하게 결합된 계약을 설정합니다. 이 기능은 일반적으로 기존 기능을 변경할 때 중요합니다. 반대로 새 기능에 대한 암시적 옵트인이 이미 있습니다.

SetSwitch 종속 라이브러리가 정의하는 스위치의 값(항상 Boolean 값)을 선언하기 위해 애플리케이션(또는 라이브러리)에서 메서드를 호출합니다. 스위치는 항상 암시적으로 false새 동작을 제공합니다. 스위치를 true에 설정하면 레거시 동작이 활성화됩니다. 스위치를 false로 명시적으로 설정하면 새 동작이 제공됩니다. 종속 라이브러리는 메서드를 호출 TryGetSwitch 하여 스위치의 값을 확인할 수 있습니다.

메모

스위치 이름은 라이브러리에서 공개하는 공식 계약이므로 일관된 형식을 사용하는 것이 좋습니다. 다음은 두 가지 명백한 형식입니다.

  • 스위치.네임스페이스. 스위치 이름
  • 스위치.라이브러리.스위치 이름

.NET Framework에서 실행되는 애플리케이션의 경우 스위치의 값을 프로그래밍 방식으로 설정하는 것 외에도 다음을 설정할 수 있습니다.

  • 애플리케이션 구성 파일의 런타임< 섹션에서 AppContextSwitchOverrides 요소에> 스위치 이름과 값을 추가합니다.<> 예를 들어 다음에서는 값Libraries.FPLibrary.UseExactFloatingPointComparison이 .인 스위치 False 를 정의합니다.

    <configuration>
       <runtime>
          <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" />
       </runtime>
    </configuration>
    
  • 이름이 스위치의 이름인 문자열 값을 HKLM\SOFTWARE\Microsoft\에 추가합니다. NETFramework\AppContext(및 HKLM\SOFTWARE\Wow6432Node\Microsoft\. 레지스트리의 NETFramework\AppContext) 하위 키입니다. 해당 값은 메서드에서 구문 분석 Boolean 할 수 있는 문자열 표현 Boolean.Parse 이어야 합니다. 즉, "True", "true", "False" 또는 "false"여야 합니다.

레지스트리 항목이 있는 경우 해당 값은 호출 시 인수 isEnabledSetSwitch 의해 덮어씁니다. 즉, 메서드에 SetSwitch 대한 가장 최근의 호출은 레지스트리, 앱 구성 파일 또는 메서드에 대한 이전 호출에 정의된 값을 재정의 SetSwitch 합니다.

적용 대상

추가 정보