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.

Примеры

Следующая строка кода задает переключатель с именем Switch.AmazingLib.ThrowOnExceptiontrue, в который включается устаревшее поведение. Затем библиотека может проверить, задан ли потребитель библиотеки значение коммутатора путем вызова 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 метод.

Note

Полезно использовать согласованный формат для имен коммутаторов, так как они являются формальным контрактом, предоставляемым библиотекой. Ниже приведены два очевидных формата.

  • Switch.пространства имен.switchname
  • коммутатор.библиотека.имя коммутатора

Для приложений, работающих в .NET Framework, помимо установки значения коммутатора программным способом, его также можно задать:

  • Добавив имя и значение переключателя в <элемент AppContextSwitchOverrides> в <разделе среды выполнения> файла конфигурации приложения. Например, в следующем примере определяется переключатель с именем Libraries.FPLibrary.UseExactFloatingPointComparison , значение которого равно False.

    <configuration>
       <runtime>
          <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" />
       </runtime>
    </configuration>
    
  • Добавив строковое значение, имя которого — имя переключателя в HKLM\SOFTWARE\Microsoft\\. NETFramework\AppContextHKLM\SOFTWARE\Wow6432Node\Microsoft\\ Подразделы NETFramework\AppContext) в реестре. Его значение должно быть строковым представлением Boolean метода, которое может быть проанализировано методом Boolean.Parse ; то есть должно быть "True", "true", "False" или "false".

Если запись реестра существует, его значение перезаписывается аргументом isEnabled при SetSwitch вызове. То есть последний вызов SetSwitch метода переопределяет значение, определенное в реестре, в файле конфигурации приложения или при предыдущих вызовах SetSwitch метода.

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

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