AppContext.TryGetSwitch(String, Boolean) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Intenta obtener el valor de un conmutador.
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
Nombre del conmutador.
- isEnabled
- Boolean
Cuando este método devuelve los resultados, contiene el valor de switchName
si se encontró switchName
o false
si no se encontró switchName
. Este parámetro se pasa sin inicializar.
Devoluciones
true
si se estableció switchName
y el argumento isEnabled
contiene el valor del conmutador; de lo contrario, false
.
Excepciones
switchName
es null
.
switchName
es Empty.
Ejemplos
En el ejemplo siguiente se determina si un consumidor de biblioteca ha establecido un modificador denominado 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
Comentarios
La AppContext clase permite a los escritores de bibliotecas proporcionar un mecanismo uniforme de exclusión para la nueva funcionalidad para sus usuarios. Establece un contrato flexible entre los componentes para poder comunicar una solicitud de cancelación de la participación. Esta capacidad normalmente es importante cuando se realiza un cambio en la funcionalidad existente. Por el contrario, la nueva funcionalidad participa de forma implícita.
Common Language Runtime rellena automáticamente los modificadores asignados a una AppContext instancia mediante la lectura del registro y el archivo de configuración de la aplicación. A continuación, se puede invalidar el valor de estos modificadores y se pueden agregar nuevos modificadores mediante una llamada al SetSwitch método .
Una biblioteca llama al TryGetSwitch método para comprobar si sus consumidores han declarado el valor del modificador y, a continuación, actúan correctamente en él. De forma predeterminada, si el modificador no está definido, se habilita la nueva funcionalidad. Si se define el modificador y su valor es false
, también se habilita la nueva funcionalidad. Si su valor es true
, el comportamiento heredado está habilitado.