Поделиться через


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.

Примеры

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

Примечание

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

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

Для приложений, работающих на платформа .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 метода.

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

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