AppContext.SetSwitch(String, Boolean) Metodo

Definizione

Imposta il valore di un'opzione.

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)

Parametri

switchName
String

Nome dell'opzione.

isEnabled
Boolean

Valore dell'opzione.

Eccezioni

switchName è null.

switchName è Empty.

Esempio

La riga di codice seguente imposta un commutatore denominato Switch.AmazingLib.ThrowOnException su true, che consente un comportamento legacy. La libreria può quindi verificare se un consumer di libreria ha impostato il valore dell'opzione chiamando il TryGetSwitch metodo .

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

Commenti

La AppContext classe consente ai writer della libreria di fornire un meccanismo di consenso esplicito uniforme per le nuove funzionalità per gli utenti. Stabilisce un contratto associato in modo libero tra i componenti per comunicare una richiesta di rifiuto esplicito. Questa funzionalità è importante in genere quando viene apportata una modifica alle funzionalità esistenti. Al contrario, esiste già un consenso esplicito per la nuova funzionalità.

Il SetSwitch metodo viene chiamato da un'applicazione (o una libreria) per dichiarare il valore di un commutatore (che è sempre un Boolean valore) definito da una libreria dipendente. L'opzione è sempre implicitamente false, che fornisce il nuovo comportamento. L'impostazione dell'opzione su true consente di abilitarla, che fornisce il comportamento legacy. Impostando in modo esplicito l'opzione su false fornisce anche il nuovo comportamento. La libreria dipendente può quindi controllare il valore dell'opzione chiamando il TryGetSwitch metodo .

Nota

È utile usare un formato coerente per i nomi degli switch, poiché sono un contratto formale esposto da una libreria. Di seguito sono riportati due formati ovvi.

  • Opzione.spaziodeinomi.nomeopzione
  • Opzione.libreria.nomeopzione

Per le applicazioni in esecuzione in .NET Framework, oltre a impostare il valore di un commutatore a livello di codice, può anche essere impostato:

  • Aggiungendo il nome del commutatore e il valore all'elemento <AppContextSwitchOverrides> nella <sezione runtime> di un file di configurazione dell'applicazione. Ad esempio, il seguente definisce un'opzione denominata Libraries.FPLibrary.UseExactFloatingPointComparison il cui valore è False.

    <configuration>
       <runtime>
          <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" />
       </runtime>
    </configuration>
    
  • Aggiungendo un valore stringa il cui nome è il nome dell'opzione a HKLM\SOFTWARE\Microsoft\. NETFramework\AppContext (e HKLM\SOFTWARE\Wow6432Node\Microsoft\. Sottochiavi NETFramework\AppContext) nel Registro di sistema. Il valore deve essere la rappresentazione stringa di un Boolean oggetto che può essere analizzato dal Boolean.Parse metodo, ovvero deve essere "True", "true", "False" o "false".

Se esiste la voce del Registro di sistema, il relativo valore viene sovrascritto dall'argomento isEnabled quando SetSwitch viene chiamato. Ovvero, la chiamata più recente al SetSwitch metodo esegue l'override del valore definito nel Registro di sistema, in un file di configurazione dell'app o da chiamate precedenti al SetSwitch metodo.

Si applica a

Vedi anche