AppContext.TryGetSwitch(String, Boolean) Methode

Definition

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

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.

Gilt für:

Weitere Informationen