FeatureSwitchDefinitionAttribute Classe

Définition

Indique que la propriété booléenne statique publique spécifiée correspond au commutateur de fonctionnalité spécifié par son nom.

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
Héritage
FeatureSwitchDefinitionAttribute
Attributs

Exemples

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() => ...;
}

Lorsque l’application est rognée avec les paramètres de fonctionnalité suivants dans le fichier projet, Feature.IsSupported est traitée comme false, et Feature.Implementation le code est supprimé.

<ItemGroup>
  <RuntimeHostConfigurationOption Include="Feature.IsSupported" Value="false" Trim="true" />
</ItemGroup>

Remarques

Les réécriteurs et compilateurs IL peuvent utiliser cet attribut pour remplacer la valeur de retour de la propriété spécifiée par la valeur du commutateur de fonctionnalité.

La valeur du commutateur de fonctionnalité ne peut être spécifiée qu’au niveau de l’application et affecte l’ensemble de l’application. Il est possible d’entrer dans des situations où une bibliothèque qui fait partie de l’application nécessite que le commutateur de fonctionnalité soit activé, mais n’a aucun moyen de communiquer cela à l’auteur de l’application.

Les commutateurs de fonctionnalités compliquent les tests unitaires et le partage de code, car différentes configurations d’application peuvent avoir des valeurs différentes du commutateur de fonctionnalité et il est difficile de s’assurer que tous les chemins de code fonctionnent comme prévu.

Il est donc préférable de structurer les API d’une manière que le découpage peut se produire naturellement sans aucun commutateur de fonctionnalité. L’utilisation des commutateurs de fonctionnalités doit être réservée aux situations où le découpage doit se produire, mais il n’est pas possible de modifier les API pour autoriser la suppression naturelle.

Constructeurs

Nom Description
FeatureSwitchDefinitionAttribute(String)

Initialise une nouvelle instance de la FeatureSwitchDefinitionAttribute classe

avec le nom du commutateur de fonctionnalité spécifié.

Propriétés

Nom Description
SwitchName

Nom du commutateur de fonctionnalité qui fournit la valeur de la propriété spécifiée.

TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

S’applique à