AppContext.TryGetSwitch(String, Boolean) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
スイッチの値の取得を試みます。
public:
static bool TryGetSwitch(System::String ^ switchName, [Runtime::InteropServices::Out] bool % isEnabled);
public static bool TryGetSwitch (string switchName, out bool isEnabled);
static member TryGetSwitch : string * bool -> bool
Public Shared Function TryGetSwitch (switchName As String, ByRef isEnabled As Boolean) As Boolean
パラメーター
- switchName
- String
スイッチの名前です。
- isEnabled
- Boolean
このメソッドが返されるときに switchName
が見つかった場合、switchName
の値が含まれます。switchName
が見つからなかった場合は false
。 このパラメーターは初期化せずに渡されます。
戻り値
switchName
が設定され、isEnabled
の引数にスイッチの値が含まれている場合は true
。それ以外の場合は false
。
例外
switchName
が null
です。
switchName
は Empty です。
例
次の例では、ライブラリ コンシューマーが という名前 Switch.AmazingLib.ThrowOnException
のスイッチを設定しているかどうかを判断します。
public class AmazingLib
{
private bool shouldThrow;
public void PerformAnOperation()
{
if (!AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", out shouldThrow)) {
// This is the case where the switch value was not set by the application.
// The library can choose to get the value of shouldThrow by other means.
// If no overrides or default values are specified, the value should be 'false'.
// A false value implies the latest behavior.
}
// The library can use the value of shouldThrow to throw exceptions or not.
if (shouldThrow) {
// old code
}
else {
// new code
}
}
}
module AmazingLib =
let performAnOperation () =
match AppContext.TryGetSwitch "Switch.AmazingLib.ThrowOnException" with
| false, _ ->
// This is the case where the switch value was not set by the application.
// The library can choose to get the value of shouldThrow by other means.
// If no overrides or default values are specified, the value should be 'false'.
// A false value implies the latest behavior.
()
| true, shouldThrow ->
// The library can use the value of shouldThrow to throw exceptions or not.
if shouldThrow then
// old code
()
else
// new code
()
Public Class AmazingLib
Private shouldThrow As Boolean
Public Sub PerformAnOperation()
If Not AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", shouldThrow) Then
' This is the case where the switch value was not set by the application.
' The library can choose to get the value of shouldThrow by other means.
' If no overrides or default values are specified, the value should be 'false'.
' A false value implies the latest behavior.
End If
' The library can use the value of shouldThrow to throw exceptions or not.
If shouldThrow Then
' old code
Else
' new code
End If
End Sub
End Class
注釈
AppContextクラスを使用すると、ライブラリ ライターは、ユーザーの新機能に対して統一されたオプトアウト メカニズムを提供できます。 これにより、オプトアウト要求を伝達するために、コンポーネント間に疎結合のコントラクトが確立されます。 通常、この機能は既存の機能が変更されるときに重要となります。 それに対して、新しい機能には暗黙のオプトインが既に存在しています。
共通言語ランタイムは、レジストリとアプリケーションの構成ファイルを AppContext 読み取ることによって、インスタンスに割り当てられたスイッチを自動的に設定します。 これらのスイッチの値をオーバーライドし、 メソッドを呼び出して新しいスイッチを SetSwitch 追加できます。
ライブラリは メソッドをTryGetSwitch呼び出して、コンシューマーがスイッチの値を宣言したかどうかをチェックし、それに対して適切に動作します。 既定では、スイッチが定義されていない場合は、新しい機能が有効になります。 スイッチが定義され、その値が の場合、 false
新しい機能も有効になります。 その値が の場合、 true
レガシ動作が有効になります。
適用対象
こちらもご覧ください
.NET