다음을 통해 공유


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

스위치의 값입니다.

예외

switchName이(가) null인 경우

switchName이(가) Empty인 경우

예제

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

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

설명

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

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

참고

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

  • Switch.namespace.switchname
  • Switch.library.switchname

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

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

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

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

적용 대상

추가 정보