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\AppContext (и HKLM\SOFTWARE\Wow6432Node\Microsoft\\ Подразделы NETFramework\AppContext) в реестре. Его значение должно быть строковым представлением Boolean метода, которое может быть проанализировано методом Boolean.Parse ; то есть должно быть "True", "true", "False" или "false".
Если запись реестра существует, его значение перезаписывается аргументом isEnabled при SetSwitch вызове. То есть последний вызов SetSwitch метода переопределяет значение, определенное в реестре, в файле конфигурации приложения или при предыдущих вызовах SetSwitch метода.