Partage via


AppContext.TryGetSwitch(String, Boolean) Méthode

Définition

Tente d’obtenir la valeur d’un commutateur.

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

Paramètres

switchName
String

Nom du commutateur.

isEnabled
Boolean

Cette méthode la valeur de switchName si switchName a été trouvé, ou false si switchName est introuvable. Ce paramètre est passé sans être initialisé.

Retours

true si switchName a été défini et que l’argument isEnabled contient la valeur du commutateur ; sinon, false.

Exceptions

switchName a la valeur null.

switchName a la valeur Empty.

Exemples

L’exemple suivant détermine si un consommateur de bibliothèque a défini un commutateur nommé 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

Remarques

La AppContext classe permet aux rédacteurs de bibliothèque de fournir un mécanisme de refus uniforme pour les nouvelles fonctionnalités pour leurs utilisateurs. Elle établit un contrat souple entre les composants pour la communication des demandes de désactivation. Cette fonctionnalité est particulièrement importante quand une modification est apportée aux fonctionnalités existantes. À l'inverse, il existe déjà une activation implicite des nouvelles fonctionnalités.

Le Common Language Runtime remplit automatiquement les commutateurs affectés à un AppContext instance en lisant le Registre et le fichier de configuration de l’application. La valeur de ces commutateurs peut ensuite être remplacée et de nouveaux commutateurs ajoutés en appelant la SetSwitch méthode .

Une bibliothèque appelle la TryGetSwitch méthode pour case activée si ses consommateurs ont déclaré la valeur du commutateur, puis agissent correctement sur celle-ci. Par défaut, si le commutateur n’est pas défini, la nouvelle fonctionnalité est activée. Si le commutateur est défini et que sa valeur est false, la nouvelle fonctionnalité est également activée. Si sa valeur est true, le comportement hérité est activé.

S’applique à

Voir aussi