Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 permet d’identifier les définitions d’attributs dans les métadonnées rapidement et facilement. Supposons que vous souhaitez baliser des types avec le nom du programmeur qui a écrit le type. Vous pouvez définir une classe d’attribut personnalisée Author
:
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
private string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
Version = 1.0;
}
}
Le nom AuthorAttribute
de la classe est le nom de l’attribut, Author
ainsi que le Attribute
suffixe. Elle est dérivée de System.Attribute
, il s’agit donc d’une classe d’attributs personnalisée. Les paramètres du constructeur sont les paramètres positionnels de l’attribut personnalisé. Dans cet exemple, name
il s’agit d’un paramètre positionnel. Tous les champs ou propriétés publics en lecture-écriture sont des paramètres nommés. Dans ce cas, version
est le seul paramètre nommé. Notez l’utilisation de l’attribut AttributeUsage
pour rendre l’attribut valide uniquement sur les classes et les déclarations Author
.
Vous pouvez utiliser ce nouvel attribut comme suit :
[Author("P. Ackerman", Version = 1.1)]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage
a un paramètre nommé, AllowMultiple
avec lequel vous pouvez créer un attribut personnalisé à usage unique ou multiutiliseur. Dans l’exemple de code suivant, un attribut multiutiliseur est créé.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
// Default value.
Version = 1.0;
}
public string GetName() => Name;
}
Dans l’exemple de code suivant, plusieurs attributs du même type sont appliqués à une classe.
[Author("P. Ackerman"), Author("R. Koch", Version = 2.0)]
public class ThirdClass
{
// ...
}