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
, включено поведение прежних версий.