AppContext.SetSwitch(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.
Legt den Wert eines Schalters fest.
public:
static void SetSwitch(System::String ^ switchName, bool isEnabled);
public static void SetSwitch (string switchName, bool isEnabled);
static member SetSwitch : string * bool -> unit
Public Shared Sub SetSwitch (switchName As String, isEnabled As Boolean)
Parameter
- switchName
- String
Der Name des Schalters.
- isEnabled
- Boolean
Der Wert des Schalters.
Ausnahmen
switchName
ist null
.
switchName
ist Empty.
Beispiele
Die folgende Codezeile legt einen Schalter namens Switch.AmazingLib.ThrowOnException
auf true
fest, der ein Legacyverhalten ermöglicht. Die Bibliothek kann dann überprüfen, ob ein Bibliotheksconsumer den Wert des Schalters festgelegt hat, indem die TryGetSwitch -Methode aufgerufen wird.
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true)
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", True)
Hinweise
Die AppContext -Klasse ermöglicht es Bibliotheksautoren, ihren Benutzern einen einheitlichen Opt-Out-Mechanismus für neue Funktionen 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 SetSwitch -Methode wird von einer Anwendung (oder einer Bibliothek) aufgerufen, um den Wert eines Schalters (der immer ein Boolean Wert ist) zu deklarieren, den eine abhängige Bibliothek definiert. Der Schalter ist immer implizit false
, wodurch das neue Verhalten bereitgestellt wird. Wenn Sie den Schalter auf true
festlegen, wird dies aktiviert, wodurch das Legacyverhalten bereitgestellt wird. Durch das explizite Festlegen des Schalters auf false
wird auch das neue Verhalten bereitgestellt. Die abhängige Bibliothek kann dann den Wert des Schalters überprüfen, indem sie die TryGetSwitch -Methode aufruft.
Hinweis
Es ist von Vorteil, ein konsistentes Format für Switchnamen zu verwenden, da es sich um einen formellen Vertrag handelt, der von einer Bibliothek verfügbar gemacht wird. Das folgende Beispiel zeigt zwei offensichtliche Formate.
- Switch.namespace.switchname
- Switch.library.switchname
Für Anwendungen, die auf .NET Framework ausgeführt werden, kann er zusätzlich zum programmgesteuerten Festlegen des Werts eines Schalters auch festgelegt werden:
Durch Hinzufügen des Switchnamens und -werts <zum AppContextSwitchOverrides-Element> im <Laufzeitabschnitt> einer Anwendungskonfigurationsdatei. Im Folgenden wird beispielsweise ein Switch namens
Libraries.FPLibrary.UseExactFloatingPointComparison
definiert, dessen Wert istFalse
.<configuration> <runtime> <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" /> </runtime> </configuration>
Durch Hinzufügen eines Zeichenfolgenwerts, dessen Name der Name des Schalters zu HKLM\SOFTWARE\Microsoft\ ist. NETFramework\AppContext (und HKLM\SOFTWARE\Wow6432Node\Microsoft\. NETFramework\AppContext)-Unterschlüssel in der Registrierung. Sein Wert muss die Zeichenfolgendarstellung einer Boolean sein, die von der Boolean.Parse -Methode analysiert werden kann. Das heißt, sie muss "True", "true", "False" oder "false" sein.
Wenn der Registrierungseintrag vorhanden ist, wird sein Wert beim Aufruf durch das isEnabled
-Argument SetSwitch überschrieben. Das heißt, der letzte Aufruf der SetSwitch -Methode überschreibt den in der Registrierung, in einer App-Konfigurationsdatei oder durch vorherige Aufrufe der SetSwitch -Methode definierten Wert.