FeatureSwitchDefinitionAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Indica che la proprietà di sola lettura statica pubblica specificata corrisponde all'opzione di funzionalità specificata in base al nome.
public ref class FeatureSwitchDefinitionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Property, Inherited=false)]
public sealed class FeatureSwitchDefinitionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property, Inherited=false)>]
type FeatureSwitchDefinitionAttribute = class
inherit Attribute
Public NotInheritable Class FeatureSwitchDefinitionAttribute
Inherits Attribute
- Ereditarietà
- Attributi
Esempio
if (Feature.IsSupported)
Feature.Implementation();
public class Feature
{
[FeatureSwitchDefinition("Feature.IsSupported")]
internal static bool IsSupported => AppContext.TryGetSwitch("Feature.IsSupported", out bool isEnabled) ? isEnabled : true;
internal static Implementation() => ...;
}
Quando l'app viene tagliata con le impostazioni di funzionalità seguenti nel file di progetto, Feature.IsSupported viene considerata come falsee Feature.Implementation il codice viene rimosso.
<ItemGroup>
<RuntimeHostConfigurationOption Include="Feature.IsSupported" Value="false" Trim="true" />
</ItemGroup>
Commenti
I rewriter e i compilatori IL possono usare questo attributo per sostituire il valore restituito della proprietà specificata con il valore dell'opzione di funzionalità.
Il valore dell'opzione di funzionalità può essere specificato solo a livello di applicazione e influisce sull'intera applicazione. È possibile entrare in situazioni in cui una libreria che fa parte dell'applicazione richiede l'attivazione dell'opzione di funzionalità, ma non ha modo di comunicare con l'autore dell'applicazione.
Le opzioni di funzionalità complicano il test unità e la condivisione del codice perché le diverse configurazioni dell'applicazione potrebbero avere valori diversi dell'opzione di funzionalità ed è difficile garantire che tutti i percorsi di codice funzionino come previsto.
È quindi preferibile strutturare le API in modo che il taglio possa verificarsi naturalmente senza commutatori di funzionalità. L'uso dei commutatori di funzionalità deve essere riservato per situazioni in cui è necessario eseguire il taglio, ma non è possibile modificare le API per consentire naturalmente il taglio.
Costruttori
| Nome | Descrizione |
|---|---|
| FeatureSwitchDefinitionAttribute(String) |
Inizializza una nuova istanza della FeatureSwitchDefinitionAttribute classe con il nome dell'opzione di funzionalità specificata. |
Proprietà
| Nome | Descrizione |
|---|---|
| SwitchName |
Nome dell'opzione di funzionalità che fornisce il valore per la proprietà specificata. |
| TypeId |
Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute) |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| GetHashCode() |
Restituisce il codice hash per questa istanza. (Ereditato da Attribute) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsDefaultAttribute() |
Quando sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
| Match(Object) |
Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |