AppContext.TryGetSwitch(String, Boolean) Metoda

Definicja

Próbuje uzyskać wartość przełącznika.

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

Parametry

switchName
String

Nazwa przełącznika.

isEnabled
Boolean

Gdy ta metoda zwróci wartość , zawiera wartość switchName , jeśli switchName została znaleziona lub false nie switchName została znaleziona. Ten parametr jest przekazywany jako niezainicjowany.

Zwraca

true jeśli switchName został ustawiony, a isEnabled argument zawiera wartość przełącznika; w przeciwnym razie false.

Wyjątki

switchName to null.

switchName to Empty.

Przykłady

Poniższy przykład określa, czy użytkownik biblioteki ustawił przełącznik o nazwie Switch.AmazingLib.ThrowOnException.

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

Uwagi

Klasa AppContext umożliwia autorom bibliotek zapewnienie jednolitego mechanizmu rezygnacji dla nowych funkcji dla użytkowników. Ustanawia luźno sprzężony kontrakt między składnikami w celu komunikowania się z żądaniem rezygnacji. Ta funkcja jest zwykle ważna, gdy wprowadzono zmianę w istniejących funkcjach. Z drugiej strony istnieje już niejawna zgoda na nowe funkcje.

Środowisko uruchomieniowe języka wspólnego automatycznie wypełnia przełączniki przypisane do AppContext wystąpienia, odczytując rejestr i plik konfiguracji aplikacji. Wartość tych przełączników można następnie zastąpić, a nowe przełączniki dodane przez wywołanie SetSwitch metody .

Biblioteka wywołuje metodę w TryGetSwitch celu sprawdzenia, czy jego konsumenci zadeklarowali wartość przełącznika, a następnie odpowiednio działają na nim. Domyślnie, jeśli przełącznik nie jest zdefiniowany, nowa funkcja jest włączona. Jeśli przełącznik jest zdefiniowany, a jego wartość to false, nowa funkcja jest również włączona. Jeśli jego wartość to true, starsze zachowanie jest włączone.

Dotyczy

Zobacz też