AppContext.TryGetSwitch(String, Boolean) AppContext.TryGetSwitch(String, Boolean) AppContext.TryGetSwitch(String, Boolean) AppContext.TryGetSwitch(String, Boolean) Method

定義

スイッチの値の取得を試みます。Tries to get the value of a switch.

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 String String String

スイッチの名前です。The name of the switch.

isEnabled
Boolean Boolean Boolean Boolean

このメソッドが返されるときに switchName が見つかった場合、switchName の値が含まれます。switchName が見つからなかった場合は falseWhen this method returns, contains the value of switchName if switchName was found, or false if switchName was not found. このパラメーターは初期化せずに渡されます。This parameter is passed uninitialized.

戻り値

switchName が設定され、isEnabled の引数にスイッチの値が含まれている場合は true。それ以外の場合は falsetrue if switchName was set and the isEnabled argument contains the value of the switch; otherwise, false.

例外

次の例では、ライブラリコンシューマーがという名前Switch.AmazingLib.ThrowOnExceptionのスイッチを設定しているかどうかを確認します。The following example determines whether a library consumer has set a switch named 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
      }
   }
}
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クラスを使用すると、ライブラリの作成者は、ユーザーに新しい機能を提供するための統一されたオプトアウトメカニズムを提供できます。The AppContext class enables library writers to provide a uniform opt-out mechanism for new functionality for their users. これは、オプトアウト要求を伝達するために、コンポーネント間に疎結合のコントラクトを確立します。It establishes a loosely-coupled contract between components in order to communicate an opt-out request. 通常、この機能は既存の機能が変更されるときに重要となります。This capability is typically important when a change is made to existing functionality. それに対して、新しい機能には暗黙のオプトインが既に存在しています。Conversely, there is already an implicit opt-in for new functionality.

共通言語ランタイムは、レジストリとアプリケーションの構成ファイルAppContextを読み取って、インスタンスに割り当てられたスイッチを自動的に設定します。The common language runtime automatically populates the switches assigned to an AppContext instance by reading the registry and the application's configuration file. その後、これらのスイッチの値をオーバーライドし、新しいスイッチを追加してSetSwitch 、メソッドを呼び出すことができます。The value of these switches can then be overridden, and new switches added, by calling the SetSwitch method.

ライブラリは、 TryGetSwitchメソッドを呼び出して、コンシューマーがスイッチの値を宣言したかどうかを確認し、適切に操作します。A library calls the TryGetSwitch method to check whether its consumers have declared the value of the switch and then act appropriately on it. 既定では、スイッチが定義されていない場合は、新しい機能が有効になります。By default, if the switch is not defined, the new functionality is enabled.. スイッチが定義され、その値がfalseの場合は、新しい機能も有効になります。If the switch is defined and its value is false, the new functionality is also enabled. 値がtrueの場合は、従来の動作が有効になります。If its value is true, the legacy behavior is enabled.

適用対象

こちらもご覧ください