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 найдено или falseswitchName не найдено. Этот параметр передается неинициализирован.
Возвращаемое значение
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, включено устаревшее поведение.