AppContext.TryGetSwitch(String, Boolean) Метод

Определение

Предпринимает попытку получения значения переключателя.

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 найден, или false, если switchName не найден. Этот параметр передается неинициализированным.

Возвращаемое значение

true, если для switchName задано значение и аргумент isEnabled содержит значение переключателя; в противном случае — 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 позволяет библиотекам записи предоставлять единый механизм отказа для новых функций для своих пользователей. Он устанавливает слабо связанный контракт между компонентами для передачи запроса на явный отказ. Эта возможность обычно важна при внесении изменений в существующие функции. В свою очередь, режим неявного согласия для новых функциональных возможностей уже существует.

Среда CLR автоматически заполняет параметры, назначенные экземпляру AppContext , считывая реестр и файл конфигурации приложения. Затем значение этих параметров можно переопределить и добавить новые параметры, вызвав SetSwitch метод .

Библиотека вызывает метод , TryGetSwitch чтобы проверка, объявили ли ее потребители значение переключателя, а затем действовать с ним соответствующим образом. По умолчанию, если параметр не определен, новая функциональность включена. Если параметр определен и его значение равно false, также включается новая функциональность. Если его значение равно true, включено поведение прежних версий.

Применяется к

См. также раздел