AppContext.TryGetSwitch(String, Boolean) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Versucht, den Wert eines Schalters abzurufen.
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
Parameter
- switchName
- String
Der Name des Schalters.
- isEnabled
- Boolean
Wenn diese Methode zurückgegeben wird, enthält sie den Wert der switchName gefundenen switchName oder false nicht switchName gefundenen. Dieser Parameter wird nicht initialisiert übergeben.
Gibt zurück
true if switchName was set and the isEnabled argument contains the value of the switch; otherwise, false.
Ausnahmen
switchName ist null.
switchName ist Empty.
Beispiele
Im folgenden Beispiel wird ermittelt, ob ein Bibliotheksanwender einen Switch mit dem Namen Switch.AmazingLib.ThrowOnExceptionfestgelegt hat.
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
Hinweise
Mit der AppContext Klasse können Bibliotheksautoren einen einheitlichen Opt-Out-Mechanismus für neue Funktionen für ihre Benutzer bereitstellen. Sie richtet einen lose gekoppelten Vertrag zwischen Komponenten ein, um eine Opt-Out-Anforderung zu kommunizieren. Diese Funktion ist in der Regel wichtig, wenn eine Änderung an vorhandenen Funktionen vorgenommen wird. Umgekehrt gibt es bereits einen impliziten Opt-In-Mechanismus für neue Funktionalität.
Die Common Language Runtime füllt automatisch die Optionen auf, die einer AppContext Instanz zugewiesen sind, indem sie die Registrierung und die Konfigurationsdatei der Anwendung lesen. Der Wert dieser Switches kann dann überschrieben und neue Schalter hinzugefügt werden, indem die SetSwitch Methode aufgerufen wird.
Eine Bibliothek ruft die TryGetSwitch Methode auf, um zu überprüfen, ob die Verbraucher den Wert des Schalters deklariert und dann entsprechend darauf reagieren. Wenn der Switch nicht definiert ist, ist die neue Funktionalität standardmäßig aktiviert. Wenn der Switch definiert ist und sein Wert ist false, ist auch die neue Funktionalität aktiviert. Wenn der Wert lautet, ist truedas Legacyverhalten aktiviert.