AppContext.TryGetSwitch(String, Boolean) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Pokusí se získat hodnotu přepínače.
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
Parametry
- switchName
- String
Název přepínače.
- isEnabled
- Boolean
Pokud tato metoda vrátí, obsahuje hodnotu switchName , pokud switchName byla nalezena, nebo false pokud switchName nebyla nalezena. Tento parametr se předává neinicializovaný.
Návraty
truepokud switchName byla nastavena a isEnabled argument obsahuje hodnotu přepínače; v opačném případě . false
Výjimky
switchName je null.
switchName je Empty.
Příklady
Následující příklad určuje, zda uživatel knihovny nastavil přepínač s názvem 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
Poznámky
Třída AppContext umožňuje autorům knihoven poskytovat jednotný mechanismus odhlášení pro nové funkce pro své uživatele. Vytvoří volně propojený kontrakt mezi součástmi za účelem sdělení žádosti o odhlášení. Tato funkce je obvykle důležitá, když dojde ke změně stávajících funkcí. Naopak pro nové funkce už existuje implicitní výslovný souhlas.
Modul CLR (Common Language Runtime) automaticky naplní přepínače přiřazené instanci AppContext čtením registru a konfiguračního souboru aplikace. Hodnotu těchto přepínačů lze pak přepsat a přidat nové přepínače voláním SetSwitch metody.
Knihovna volá metodu TryGetSwitch , aby zkontrolovala, jestli její příjemci deklarovali hodnotu přepínače, a pak s ní odpovídajícím způsobem jednat. Pokud přepínač není definovaný, je ve výchozím nastavení povolená nová funkce. Pokud je přepínač definovaný a jeho hodnota je false, je také povolena nová funkce. Pokud je truejeho hodnota, je povolené starší chování.