FeatureSwitchDefinitionAttribute Classe

Definizione

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à
FeatureSwitchDefinitionAttribute
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)

Si applica a