AppContext.SetSwitch(String, Boolean) AppContext.SetSwitch(String, Boolean) AppContext.SetSwitch(String, Boolean) AppContext.SetSwitch(String, Boolean) Method

Definizione

Imposta il valore di un'opzione.Sets the value of a switch.

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 String String String

Nome dell'opzione.The name of the switch.

isEnabled
Boolean Boolean Boolean Boolean

Valore dell'opzione.The value of the switch.

Eccezioni

Esempi

Nella riga di codice seguente viene impostata un'opzione Switch.AmazingLib.ThrowOnException denominata truesu, che consente un comportamento legacy.The following line of code sets a switch named Switch.AmazingLib.ThrowOnException to true, which enables a legacy behavior. La libreria può quindi controllare se un consumer della libreria ha impostato il valore dell'opzione chiamando il TryGetSwitch metodo.The library can then check whether a library consumer has set the value of the switch by calling the TryGetSwitch method.

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

Commenti

La AppContext classe consente agli autori di librerie di fornire un meccanismo uniforme per la rinuncia esplicita alla nuova funzionalità per gli utenti.The AppContext class enables library writers to provide a uniform opt-out mechanism for new functionality for their users. che stabilisce un contratto a regime di controllo libero ("loosely-coupled") tra componenti per poter comunicare una richiesta di rinuncia esplicita.It establishes a loosely-coupled contract between components in order to communicate an opt-out request. Questa funzionalità è importante in genere quando viene apportata una modifica alle funzionalità esistenti.This capability is typically important when a change is made to existing functionality. Al contrario, esiste già un consenso esplicito per la nuova funzionalità.Conversely, there is already an implicit opt-in for new functionality.

Il SetSwitch metodo viene chiamato da un'applicazione (o una libreria) per dichiarare il valore di un'opzione (che è sempre un Boolean valore) definito da una libreria dipendente.The SetSwitch method is called by an application (or a library) to declare the value of a switch (which is always a Boolean value) that a dependent library defines. L'opzione è sempre implicitamente false, che fornisce il nuovo comportamento.The switch is always implicitly false, which provides the new behavior. Impostando l'opzione true su, viene abilitata, che fornisce il comportamento legacy.Setting the switch to true enables it, which provides the legacy behavior. Impostare in modo esplicito l' false opzione su fornisce anche il nuovo comportamento.Explicitly setting the switch to false also provides the new behavior. La libreria dipendente può quindi verificare il valore dell'opzione chiamando il TryGetSwitch metodo.The dependent library can then check the value of the switch by calling the TryGetSwitch method.

Nota

È vantaggioso usare un formato coerente per i nomi dei commutiri, dal momento che si tratta di un contratto formale esposto da una libreria.It's beneficial to use a consistent format for switch names, since they are a formal contract exposed by a library. Di seguito sono riportati due formati ovvi.The following are two obvious formats.

  • Opzione.spaziodeinomi.nomeopzioneSwitch.namespace.switchname
  • Opzione.libreria.nomeopzioneSwitch.library.switchname

Per le applicazioni in esecuzione nel .NET Framework, oltre a impostare il valore di un'opzione a livello di codice, è possibile impostare anche:For applications running on the .NET Framework, in addition to setting the value of a switch programmatically, it can also be set:

  • Aggiungendo il nome e il valore dell'opzione all' <elemento > AppContextSwitchOverrides nella <sezione runtime > di un file di configurazione dell'applicazione.By adding the switch name and value to the <AppContextSwitchOverrides> element in the <runtime> section of an application configuration file. Ad esempio, di seguito viene definita un'opzione Libraries.FPLibrary.UseExactFloatingPointComparison denominata il cui Falsevalore è.For example, the following defines a switch named Libraries.FPLibrary.UseExactFloatingPointComparison whose value is False.

    
    <configuration>
       <runtime>
          <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" />
       </runtime>
    </configuration>
    
  • Aggiungendo un valore stringa il cui nome è il nome dell'opzione alla HKLM\SOFTWARE\Microsoft\.NETFramework\AppContext chiave nel registro di sistema.By adding a string value whose name is the name of the switch to the HKLM\SOFTWARE\Microsoft\.NETFramework\AppContext key in the registry. Il valore deve corrispondere alla rappresentazione di stringa di Boolean un oggetto che può essere analizzato Boolean.Parse dal metodo, ovvero deve essere "true", "true", "false" o "false".Its value must be the string representation of a Boolean that can be parsed by the Boolean.Parse method; that is, it must be "True", "true", "False", or "false".

Se switchName esiste già, il isEnabled relativo valore viene sovrascritto dall'argomento.If switchName already exists, its value is overwritten by the isEnabled argument. 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 tramite chiamate precedenti SetSwitch al metodo.That is, the most recent call to the SetSwitch method overrides the value defined in the registry, in an app configuration file, or by previous calls to the SetSwitch method.

AppContext. selettore e .NET CoreAppContext.SetSwitch and .NET Core

.NET Core supporta le chiamate a livello SetSwitch di codice solo con il metodo..NET Core supports programmatic calls with the SetSwitch method only. Sono supportate le opzioni seguenti:The following switches are supported:

OpzioneSwitch ValoriValues DescriptionDescription
System.Net.Http.SocketsHttpHandler.Http2Support true o falsetrue or false Indica se il supporto per il protocollo http/2 è abilitatotrue() o disabilitato (false).Indicates whether support for the HTTP/2 protocol is enabled (true) or disabled (false). Il valore predefinito è Disabled.The default is disabled. È necessario impostare l'opzione prima del primo utilizzo di HttpClient.The switch must be set before the first use of HttpClient. Disponibile a partire da .NET Core 3,0 Preview 4.Available starting with .NET Core 3.0 Preview 4.
System.Net.Http.UseSocketsHttpHandler true o falsetrue or false Determina se le HttpClient API di rete di alto livello, come use System.Net.Http.SocketsHttpHandler ( System.Net.Http.HttpClientHandler true)falseo ().Determines whether high-level networking APIs such as HttpClient use System.Net.Http.SocketsHttpHandler (true) or System.Net.Http.HttpClientHandler (false).

Si applica a

Vedi anche