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ückkehrt, enthält sie den Wert switchName
, wenn switchName
gefunden wurde, oder false
, wenn switchName
nicht gefunden wurde. Dieser Parameter wird nicht initialisiert übergeben.
Gibt zurück
true
, wenn switchName
festgelegt wurde und das isEnabled
-Argument den Wert des Schalters enthält, andernfalls false
.
Ausnahmen
switchName
ist null
.
switchName
ist Empty.
Beispiele
Im folgenden Beispiel wird ermittelt, ob ein Bibliotheks-Consumer einen Schalter mit dem Namen Switch.AmazingLib.ThrowOnException
festgelegt 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
Die AppContext -Klasse ermöglicht es Bibliotheksautoren, einen einheitlichen Mechanismus für die Deaktivierung neuer Funktionen für ihre Benutzer bereitzustellen. Es richtet einen lose gekoppelten Vertrag zwischen den Komponenten ein, um eine Anforderung zur Abwahl zu übermitteln. Diese Möglichkeit ist in der Regel wichtig, wenn vorhandene Funktionalitäten verändert werden. Im Gegensatz dazu existiert bereits eine implizite Auswahloption für neue Funktionalitäten.
Die Common Language Runtime füllt automatisch die Switches auf, die einem AppContext instance zugewiesen sind, indem die Registrierung und die Konfigurationsdatei der Anwendung gelesen werden. Der Wert dieser Switches kann dann überschrieben und neue Switches hinzugefügt werden, indem die SetSwitch -Methode aufgerufen wird.
Eine Bibliothek ruft die TryGetSwitch -Methode auf, um zu überprüfen, ob ihre Consumer den Wert des Switches deklariert haben, und dann entsprechend darauf zu handeln. 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 ist true
, ist das Legacyverhalten aktiviert.