AppContext.TryGetSwitch(String, Boolean) Método

Definição

Tenta obter o valor de um comutador.

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

Parâmetros

switchName
String

O nome de opção.

isEnabled
Boolean

Quando esse método for retornado, conterá o valor de switchName se switchName tiver sido encontrada ou false se switchName não tiver sido. Este parâmetro é passado não inicializado.

Retornos

true se switchName estiver definido e o argumento isEnabled contiver o valor do comutador; caso contrário, false.

Exceções

switchName é null.

switchName é Empty.

Exemplos

O exemplo a seguir determina se um consumidor de biblioteca definiu uma opção chamada 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

Comentários

A AppContext classe permite que os gravadores de biblioteca forneçam um mecanismo de recusa uniforme para novas funcionalidades para seus usuários. Ela estabelece um contrato flexível entre componentes a fim de comunicar uma solicitação de recusa. Normalmente, essa funcionalidade é importante quando uma alteração é feita na funcionalidade existente. Por outro lado, já existe uma aceitação implícita da nova funcionalidade.

O Common Language Runtime preenche automaticamente as opções atribuídas a uma AppContext instância lendo o registro e o arquivo de configuração do aplicativo. O valor dessas opções pode então ser substituído e novas opções adicionadas, chamando o SetSwitch método .

Uma biblioteca chama o TryGetSwitch método para marcar se seus consumidores declararam o valor da opção e, em seguida, agem adequadamente nele. Por padrão, se a opção não estiver definida, a nova funcionalidade será habilitada. Se a opção for definida e seu valor for false, a nova funcionalidade também estará habilitada. Se seu valor for true, o comportamento herdado será habilitado.

Aplica-se a

Confira também