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チェックできます。

注意

スイッチ名はライブラリによって公開される正式なコントラクトであるため、一貫性のある形式を使用すると便利です。 2 つの明確な形式を次に示します。

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

.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.Parse解析できる のBoolean文字列表現である必要があります。つまり、"True"、"true"、"False"、または "false" である必要があります。

レジストリ エントリが存在する場合、 が呼び出されるとSetSwitch、その値は 引数によってisEnabled上書きされます。 つまり、 メソッドの SetSwitch 最新の呼び出しは、レジストリ、アプリ構成ファイル、またはメソッドの以前の呼び出しで定義された値を SetSwitch オーバーライドします。

適用対象

こちらもご覧ください