AppContext.SetSwitch(String, Boolean) Methode

Definition

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 truefest, 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 ist False.

    <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.

Gilt für:

Weitere Informationen