Share via


Création d'attributs personnalisés (C# et Visual Basic)

Vous pouvez créer vos propres attributs personnalisés en définissant une classe d'attributs, une classe qui dérive directement ou indirectement de Attribute, ce qui accélère et simplifie l'identification des définitions des attributs dans les métadonnées. Supposons que vous souhaitiez baliser les types avec le nom du programmeur qui les a écrits. Vous pouvez définir une classe d'attributs personnalisés Author :

<System.AttributeUsage(System.AttributeTargets.Class Or 
                       System.AttributeTargets.Struct)> 
Public Class Author
    Inherits System.Attribute
    Private name As String
    Public version As Double
    Sub New(ByVal authorName As String)
        name = authorName
        version = 1.0
    End Sub
End Class
[System.AttributeUsage(System.AttributeTargets.Class |
                       System.AttributeTargets.Struct)
]
public class Author : System.Attribute
{
    private string name;
    public double version;

    public Author(string name)
    {
        this.name = name;
        version = 1.0;
    }
}

Le nom de la classe est le nom de l'attribut, Author. Étant dérivée de System.Attribute, il s'agit donc d'une classe d'attributs personnalisés. Les paramètres du constructeur correspondent aux paramètres positionnels de l'attribut personnalisé. Dans cet exemple, name est un paramètre positionnel. Les propriétés ou les champs de type public qui sont accessibles en lecture-écriture correspondent à des paramètres nommés. Dans ce cas, version est le seul paramètre nommé. Notez l'utilisation de l'attribut AttributeUsage permettant de rendre l'attribut Author valide uniquement dans les déclarations de classe et de struct (Structure en Visual Basic).

Vous pouvez utiliser ce nouvel attribut de la manière suivante :

<Author("P. Ackerman", Version:=1.1)> 
Class SampleClass
    ' P. Ackerman's code goes here...
End Class
[Author("P. Ackerman", version = 1.1)]
class SampleClass
{
    // P. Ackerman's code goes here...
}

AttributeUsage a un paramètre nommé, AllowMultiple, qui permet de déclarer un attribut personnalisé comme étant à usage unique ou multiple. Dans l'exemple de code suivant, un attribut à usages multiples est créé.

' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or 
                       System.AttributeTargets.Struct, 
                       AllowMultiple:=True)> 
Public Class Author
    Inherits System.Attribute
[System.AttributeUsage(System.AttributeTargets.Class |
                       System.AttributeTargets.Struct,
                       AllowMultiple = true)  // multiuse attribute
]
public class Author : System.Attribute

Dans l'exemple de code suivant, plusieurs attributs de même type sont appliqués à une classe.

<Author("P. Ackerman", Version:=1.1), 
Author("R. Koch", Version:=1.2)> 
Class SampleClass
    ' P. Ackerman's code goes here...
    ' R. Koch's code goes here...
End Class
[Author("P. Ackerman", version = 1.1)]
[Author("R. Koch", version = 1.2)]
class SampleClass
{
    // P. Ackerman's code goes here...
    // R. Koch's code goes here...
}

Notes

Si votre classe d'attributs contient une propriété, cette dernière doit être accessible en lecture/écriture.

Voir aussi

Référence

Réflexion (C# et Visual Basic)

Attributs (C# et Visual Basic)

Accès à des attributs à l'aide de la réflexion (C# et Visual Basic)

System.Reflection

AttributeUsage (C# et Visual Basic)

Concepts

Guide de programmation C#

Écriture des attributs personnalisés

Autres ressources

Guide de programmation Visual Basic