AppContext.TryGetSwitch(String, Boolean) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Próbuje uzyskać wartość przełącznika.
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
Parametry
- switchName
- String
Nazwa przełącznika.
- isEnabled
- Boolean
Gdy ta metoda zwróci wartość , zawiera wartość switchName
, jeśli switchName
została znaleziona lub false
nie switchName
została znaleziona. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
jeśli switchName
został ustawiony, a isEnabled
argument zawiera wartość przełącznika; w przeciwnym razie false
.
Wyjątki
switchName
to null
.
switchName
to Empty.
Przykłady
Poniższy przykład określa, czy użytkownik biblioteki ustawił przełącznik o nazwie 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
Uwagi
Klasa AppContext umożliwia autorom bibliotek zapewnienie jednolitego mechanizmu rezygnacji dla nowych funkcji dla użytkowników. Ustanawia luźno sprzężony kontrakt między składnikami w celu komunikowania się z żądaniem rezygnacji. Ta funkcja jest zwykle ważna, gdy wprowadzono zmianę w istniejących funkcjach. Z drugiej strony istnieje już niejawna zgoda na nowe funkcje.
Środowisko uruchomieniowe języka wspólnego automatycznie wypełnia przełączniki przypisane do AppContext wystąpienia, odczytując rejestr i plik konfiguracji aplikacji. Wartość tych przełączników można następnie zastąpić, a nowe przełączniki dodane przez wywołanie SetSwitch metody .
Biblioteka wywołuje metodę w TryGetSwitch celu sprawdzenia, czy jego konsumenci zadeklarowali wartość przełącznika, a następnie odpowiednio działają na nim. Domyślnie, jeśli przełącznik nie jest zdefiniowany, nowa funkcja jest włączona. Jeśli przełącznik jest zdefiniowany, a jego wartość to false
, nowa funkcja jest również włączona. Jeśli jego wartość to true
, starsze zachowanie jest włączone.