AppContext.SetSwitch(String, Boolean) Método

Definição

Define o valor de um interruptor.

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)

Parâmetros

switchName
String

O nome do switch.

isEnabled
Boolean

O valor do interruptor.

Exceções

switchName é null.

switchName é Empty.

Exemplos

A linha de código seguinte define um switch nomeado Switch.AmazingLib.ThrowOnException para true, que permite um comportamento legado. A biblioteca pode então verificar se um consumidor da biblioteca definiu o valor do switch chamando o TryGetSwitch método.

AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true)
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", True)

Observações

A classe AppContext permite que os escritores de bibliotecas forneçam um mecanismo de exclusão uniforme para novas funcionalidades para seus usuários. Estabelece um contrato de acoplamento frouxo entre componentes, a fim de comunicar um pedido de autoexclusão. Esse recurso geralmente é importante quando uma alteração é feita na funcionalidade existente. Por outro lado, já existe um opt-in implícito para novas funcionalidades.

O SetSwitch método é chamado por uma aplicação (ou uma biblioteca) para declarar o valor de um switch (que é sempre um Boolean valor) que uma biblioteca dependente define. O interruptor é sempre implicitamente false, o que fornece o novo comportamento. Definir o switch como true o habilita, o que fornece o comportamento herdado. Definir explicitamente o interruptor como false também fornece o novo comportamento. A biblioteca dependente pode então verificar o valor do switch chamando o TryGetSwitch método.

Note

É benéfico usar um formato consistente para os nomes dos switches, já que são um contrato formal exposto por uma biblioteca. Seguem-se dois formatos óbvios.

  • Switch.namespace.switchname
  • Switch.biblioteca.nome do interruptor

Para aplicações a correr no .NET Framework, além de definir o valor de um switch programaticamente, também pode ser definido:

  • Ao adicionar o nome e valor do switch ao <elemento AppContextSwitchOverrides> na <secção de tempo> de execução de um ficheiro de configuração de aplicação. Por exemplo, o seguinte define um interruptor nomeado Libraries.FPLibrary.UseExactFloatingPointComparison cujo valor é False.

    <configuration>
       <runtime>
          <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" />
       </runtime>
    </configuration>
    
  • Adicionando um valor de cadeia cujo nome é o nome do switch ao HKLM\SOFTWARE\Microsoft\. NETFramework\AppContext (e HKLM\SOFTWARE\Wow6432Node\Microsoft\. NETFramework\AppContext) no registo. O seu valor deve ser a representação da cadeia de a Boolean que pode ser analisada pelo Boolean.Parse método; ou seja, deve ser "Verdadeiro", "verdadeiro", "Falso" ou "falso".

Se a entrada do registo existir, o seu valor é sobrescrito pelo isEnabled argumento quando SetSwitch é chamada. Ou seja, a chamada mais recente ao SetSwitch método sobrepõe-se ao valor definido no registo, num ficheiro de configuração da aplicação ou por chamadas anteriores ao SetSwitch método.

Aplica-se a

Ver também