AppContext.TryGetSwitch(String, Boolean) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.