Attribute Classe

Définition

Représente la classe de base des attributs personnalisés.

public ref class Attribute abstract
public ref class Attribute abstract : System::Runtime::InteropServices::_Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
public abstract class Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
type Attribute = class
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type Attribute = class
    interface _Attribute
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Attribute = class
    interface _Attribute
Public MustInherit Class Attribute
Public MustInherit Class Attribute
Implements _Attribute
Héritage
Attribute
Dérivé
Attributs
Implémente

Exemples

L’exemple de code suivant illustre l’utilisation de Attribute.

using namespace System;
using namespace System::Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum class Animal
{
    // Pets.
    Dog = 1,
    Cat, Bird
};

// A custom attribute to allow a target to have a pet.
public ref class AnimalTypeAttribute: public Attribute
{
public:

    // The constructor is called when the attribute is set.
    AnimalTypeAttribute( Animal pet )
    {
        thePet = pet;
    }


protected:

    // Keep a variable internally ...
    Animal thePet;

public:

    property Animal Pet 
    {
        // .. and show a copy to the outside world.
        Animal get()
        {
            return thePet;
        }

        void set( Animal value )
        {
            thePet = value;
        }
    }
};

// A test class where each method has its own pet.
ref class AnimalTypeTestClass
{
public:

    [AnimalType(Animal::Dog)]
    void DogMethod(){}


    [AnimalType(Animal::Cat)]
    void CatMethod(){}

    [AnimalType(Animal::Bird)]
    void BirdMethod(){}

};

int main()
{
    AnimalTypeTestClass^ testClass = gcnew AnimalTypeTestClass;
    Type^ type = testClass->GetType();

    // Iterate through all the methods of the class.
    System::Collections::IEnumerator^ myEnum = 
        type->GetMethods()->GetEnumerator();
    while ( myEnum->MoveNext() )
    {
        MethodInfo^ mInfo = safe_cast<MethodInfo^>(myEnum->Current);

        // Iterate through all the Attributes for each method.
        System::Collections::IEnumerator^ myEnum1 = 
            Attribute::GetCustomAttributes( mInfo )->GetEnumerator();
        while ( myEnum1->MoveNext() )
        {
            Attribute^ attr = safe_cast<Attribute^>(myEnum1->Current);

            // Check for the AnimalType attribute.
            if ( attr->GetType() == AnimalTypeAttribute::typeid )
                Console::WriteLine( "Method {0} has a pet {1} attribute.", 
                mInfo->Name, (dynamic_cast<AnimalTypeAttribute^>(attr))->Pet );
        }
    }
}

/*
 * Output:
 * Method DogMethod has a pet Dog attribute.
 * Method CatMethod has a pet Cat attribute.
 * Method BirdMethod has a pet Bird attribute.
 */
using System;
using System.Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum Animal {
    // Pets.
    Dog = 1,
    Cat,
    Bird,
}

// A custom attribute to allow a target to have a pet.
public class AnimalTypeAttribute : Attribute {
    // The constructor is called when the attribute is set.
    public AnimalTypeAttribute(Animal pet) {
        thePet = pet;
    }

    // Keep a variable internally ...
    protected Animal thePet;

    // .. and show a copy to the outside world.
    public Animal Pet {
        get { return thePet; }
        set { thePet = value; }
    }
}

// A test class where each method has its own pet.
class AnimalTypeTestClass {
    [AnimalType(Animal.Dog)]
    public void DogMethod() {}

    [AnimalType(Animal.Cat)]
    public void CatMethod() {}

    [AnimalType(Animal.Bird)]
    public void BirdMethod() {}
}

class DemoClass {
    static void Main(string[] args) {
        AnimalTypeTestClass testClass = new AnimalTypeTestClass();
        Type type = testClass.GetType();
        // Iterate through all the methods of the class.
        foreach(MethodInfo mInfo in type.GetMethods()) {
            // Iterate through all the Attributes for each method.
            foreach (Attribute attr in
                Attribute.GetCustomAttributes(mInfo)) {
                // Check for the AnimalType attribute.
                if (attr.GetType() == typeof(AnimalTypeAttribute))
                    Console.WriteLine(
                        "Method {0} has a pet {1} attribute.",
                        mInfo.Name, ((AnimalTypeAttribute)attr).Pet);
            }
        }
    }
}
/*
 * Output:
 * Method DogMethod has a pet Dog attribute.
 * Method CatMethod has a pet Cat attribute.
 * Method BirdMethod has a pet Bird attribute.
 */
open System

// An enumeration of animals. Start at 1 (0 = uninitialized).
type Animal =
    | Dog = 1
    | Cat = 2
    | Bird = 3

// A custom attribute to allow a target to have a pet.
type AnimalTypeAttribute(pet) =
    inherit Attribute()
    member val Pet = pet with get, set

// A test class where each method has its own pet.
type AnimalTypeTestClass() =
    [<AnimalType(Animal.Dog)>]
    member _.DogMethod() = ()

    [<AnimalType(Animal.Cat)>]
    member _.CatMethod() = ()

    [<AnimalType(Animal.Bird)>]
    member _.BirdMethod() = ()

let testClass = AnimalTypeTestClass()
let clsType = testClass.GetType()
// Iterate through all the methods of the class.
for mInfo in clsType.GetMethods() do
    // Iterate through all the Attributes for each method.
    for attr in Attribute.GetCustomAttributes mInfo do
        // Check for the AnimalType attribute.
        if attr.GetType() = typeof<AnimalTypeAttribute> then
            printfn $"Method {mInfo.Name} has a pet {(attr :?> AnimalTypeAttribute).Pet} attribute."

// Output:
//   Method DogMethod has a pet Dog attribute.
//   Method CatMethod has a pet Cat attribute.
//   Method BirdMethod has a pet Bird attribute.
Imports System.Reflection

Public Module CustomAttrVB

    ' An enumeration of animals. Start at 1 (0 = uninitialized).
    Public Enum Animal
        ' Pets
        Dog = 1
        Cat
        Bird
    End Enum

    ' Visual Basic requires the AttributeUsage be specified.
    ' A custom attribute to allow a target to have a pet.
    <AttributeUsage(AttributeTargets.Method)> _
    Public Class AnimalTypeAttribute
        Inherits Attribute

        ' The constructor is called when the attribute is set.
        Public Sub New(ByVal animal As Animal)
            Me.thePet = animal
        End Sub

        ' Keep a variable internally ...
        Protected thePet As Animal

        ' .. and show a copy to the outside world.
        Public Property Pet() As Animal
            Get
                Return thePet
            End Get
            Set(ByVal Value As Animal)
                thePet = Value
            End Set
        End Property

    End Class

    ' A test class where each method has its own pet.
    Class AnimalTypeTestClass

        <AnimalType(Animal.Dog)> _
        Public Sub DogMethod()
        End Sub

        <AnimalType(Animal.Cat)> _
        Public Sub CatMethod()
        End Sub

        <AnimalType(Animal.Bird)> _
        Public Sub BirdMethod()
        End Sub
    End Class

    ' The runtime test.
    Sub Main()
        Dim testClass As New AnimalTypeTestClass()
        Dim tcType As Type = testClass.GetType()
        Dim mInfo As MethodInfo
        ' Iterate through all the methods of the class.
        For Each mInfo In tcType.GetMethods()
            Dim attr As Attribute
            ' Iterate through all the attributes of the method.
            For Each attr In Attribute.GetCustomAttributes(mInfo)
                If TypeOf attr Is AnimalTypeAttribute Then
                    Dim attrCustom As AnimalTypeAttribute = _
                        CType(attr, AnimalTypeAttribute)
                    Console.WriteLine("Method {0} has a pet {1} attribute.", _
                         mInfo.Name(), attrCustom.Pet.ToString())
                End If
            Next
        Next
    End Sub
End Module

' Output:
' Method DogMethod has a pet Dog attribute.
' Method CatMethod has a pet Cat attribute.
' Method BirdMethod has a pet Bird attribute.

Remarques

La Attribute classe associe des informations système prédéfinies ou des informations personnalisées définies par l’utilisateur à un élément cible. Un élément cible peut être un assembly, une classe, un constructeur, un délégué, une énumération, un événement, un champ, une interface, une méthode, un module de fichier exécutable portable, un paramètre, une propriété, une valeur de retour, un struct ou un autre attribut.

Les informations fournies par un attribut sont également appelées métadonnées. Les métadonnées peuvent être examinées au moment de l’exécution par votre application pour contrôler la façon dont votre programme traite les données, ou avant l’exécution par des outils externes pour contrôler la façon dont votre application elle-même est traitée ou gérée. Par exemple, .NET prédéfinit et utilise des types d’attributs pour contrôler le comportement au moment de l’exécution, et certains langages de programmation utilisent des types d’attributs pour représenter des fonctionnalités de langage qui ne sont pas directement prises en charge par le système de type commun .NET.

Tous les types d’attributs dérivent directement ou indirectement de la Attribute classe . Les attributs peuvent être appliqués à n’importe quel élément cible ; plusieurs attributs peuvent être appliqués au même élément cible ; les attributs et peuvent être hérités par un élément dérivé d’un élément cible. Utilisez la AttributeTargets classe pour spécifier l’élément cible auquel l’attribut est appliqué.

La Attribute classe fournit des méthodes pratiques pour récupérer et tester des attributs personnalisés. Pour plus d’informations sur l’utilisation des attributs, consultez Application d’attributs et d’attributs.

Constructeurs

Attribute()

Initialise une nouvelle instance de la classe Attribute.

Propriétés

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

Méthodes

Equals(Object)

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

GetCustomAttribute(Assembly, Type)

Récupère un attribut personnalisé appliqué à un assembly spécifié. Les paramètres spécifient l'assembly et le type de l'attribut personnalisé à rechercher.

GetCustomAttribute(Assembly, Type, Boolean)

Récupère un attribut personnalisé appliqué à un assembly. Les paramètres spécifient l'assembly, le type de l'attribut personnalisé à rechercher, et une option de recherche ignorée.

GetCustomAttribute(MemberInfo, Type)

Récupère un attribut personnalisé appliqué à un membre d'un type. Les paramètres spécifient le membre, et le type de l'attribut personnalisé à rechercher.

GetCustomAttribute(MemberInfo, Type, Boolean)

Récupère un attribut personnalisé appliqué à un membre d'un type. Les paramètres spécifient le membre, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du membre.

GetCustomAttribute(Module, Type)

Récupère un attribut personnalisé appliqué à un module. Les paramètres spécifient le module, et le type de l'attribut personnalisé à rechercher.

GetCustomAttribute(Module, Type, Boolean)

Récupère un attribut personnalisé appliqué à un module. Les paramètres spécifient le module, le type de l'attribut personnalisé à rechercher, et une option de recherche ignorée.

GetCustomAttribute(ParameterInfo, Type)

Récupère un attribut personnalisé appliqué à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et le type de l'attribut personnalisé à rechercher.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Récupère un attribut personnalisé appliqué à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du paramètre de méthode.

GetCustomAttributes(Assembly)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Un paramètre spécifie l’assembly.

GetCustomAttributes(Assembly, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l'assembly, et une option de recherche ignorée.

GetCustomAttributes(Assembly, Type)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l'assembly et le type de l'attribut personnalisé à rechercher.

GetCustomAttributes(Assembly, Type, Boolean)

Récupère un tableau des attributs personnalisés appliqués à un assembly. Les paramètres spécifient l'assembly, le type de l'attribut personnalisé à rechercher, et une option de recherche ignorée.

GetCustomAttributes(MemberInfo)

Récupère le tableau des attributs personnalisés appliqué à un membre d'un type. Un paramètre spécifie le membre.

GetCustomAttributes(MemberInfo, Boolean)

Récupère le tableau des attributs personnalisés appliqué à un membre d'un type. Les paramètres spécifient le membre, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du membre.

GetCustomAttributes(MemberInfo, Type)

Récupère le tableau des attributs personnalisés appliqué à un membre d'un type. Les paramètres spécifient le membre, et le type de l'attribut personnalisé à rechercher.

GetCustomAttributes(MemberInfo, Type, Boolean)

Récupère le tableau des attributs personnalisés appliqué à un membre d'un type. Les paramètres spécifient le membre, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du membre.

GetCustomAttributes(Module)

Récupère le tableau des attributs personnalisés appliqué à un module. Un paramètre spécifie le module.

GetCustomAttributes(Module, Boolean)

Récupère le tableau des attributs personnalisés appliqué à un module. Les paramètres spécifient le module et une option de recherche ignorée.

GetCustomAttributes(Module, Type)

Récupère le tableau des attributs personnalisés appliqué à un module. Les paramètres spécifient le module, et le type de l'attribut personnalisé à rechercher.

GetCustomAttributes(Module, Type, Boolean)

Récupère le tableau des attributs personnalisés appliqué à un module. Les paramètres spécifient le module, le type de l'attribut personnalisé à rechercher, et une option de recherche ignorée.

GetCustomAttributes(ParameterInfo)

Récupère le tableau des attributs personnalisés appliqué à un paramètre de méthode. Un paramètre spécifie le paramètre de méthode.

GetCustomAttributes(ParameterInfo, Boolean)

Récupère le tableau des attributs personnalisés appliqué à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et indiquent s'il faut rechercher les ancêtres du paramètre de méthode.

GetCustomAttributes(ParameterInfo, Type)

Récupère le tableau des attributs personnalisés appliqué à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et le type de l'attribut personnalisé à rechercher.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Récupère le tableau des attributs personnalisés appliqué à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du paramètre de méthode.

GetHashCode()

Retourne le code de hachage de cette instance.

GetType()

Obtient le 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 pour la classe dérivée.

IsDefined(Assembly, Type)

Détermine si des attributs personnalisés sont appliqués à un assembly. Les paramètres spécifient l'assembly et le type de l'attribut personnalisé à rechercher.

IsDefined(Assembly, Type, Boolean)

Détermine si des attributs personnalisés sont appliqués à un assembly. Les paramètres spécifient l'assembly, le type de l'attribut personnalisé à rechercher, et une option de recherche ignorée.

IsDefined(MemberInfo, Type)

Détermine si des attributs personnalisés sont appliqués à un membre d'un type. Les paramètres spécifient le membre, et le type de l'attribut personnalisé à rechercher.

IsDefined(MemberInfo, Type, Boolean)

Détermine si des attributs personnalisés sont appliqués à un membre d'un type. Les paramètres spécifient le membre, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du membre.

IsDefined(Module, Type)

Détermine si des attributs personnalisés d'un type spécifié sont appliqués à un module. Les paramètres spécifient le module, et le type de l'attribut personnalisé à rechercher.

IsDefined(Module, Type, Boolean)

Détermine si des attributs personnalisés sont appliqués à un module. Les paramètres spécifient le module, le type de l'attribut personnalisé à rechercher, et une option de recherche ignorée.

IsDefined(ParameterInfo, Type)

Détermine si des attributs personnalisés sont appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode et le type de l'attribut personnalisé à rechercher.

IsDefined(ParameterInfo, Type, Boolean)

Détermine si des attributs personnalisés sont appliqués à un paramètre de méthode. Les paramètres spécifient le paramètre de méthode, le type de l'attribut personnalisé à rechercher, et la recherche éventuelle des ancêtres du paramètre de méthode.

Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

Implémentations d’interfaces explicites

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

S’applique à

Cohérence de thread

Ce type est thread-safe.

Voir aussi