Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Détermine comment une classe d’attributs personnalisée peut être utilisée.
AttributeUsage est un attribut qui peut être appliqué aux définitions d’attributs personnalisées pour contrôler la façon dont le nouvel attribut peut être appliqué. Les paramètres par défaut ressemblent à ceci lorsqu’ils sont appliqués explicitement :
<System.AttributeUsage(System.AttributeTargets.All,
AllowMultiple:=False,
Inherited:=True)>
Class NewAttribute
Inherits System.Attribute
End Class
Dans cet exemple, la NewAttribute classe peut être appliquée à n’importe quelle entité de code capable d’attribut, mais ne peut être appliquée qu’une seule fois à chaque entité. Elle est héritée par des classes dérivées lorsqu’elles sont appliquées à une classe de base.
Les arguments AllowMultiple et Inherited sont facultatifs, donc ce code a le même effet :
<System.AttributeUsage(System.AttributeTargets.All)>
Class NewAttribute
Inherits System.Attribute
End Class
Le premier argument AttributeUsage doit correspondre à un ou plusieurs éléments de l’énumération AttributeTargets. Plusieurs types cibles peuvent être liés avec l’opérateur OR, comme suit :
<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field)>
Class NewPropertyOrFieldAttribute
Inherits Attribute
End Class
Si l’argument AllowMultiple est défini sur true, l’attribut résultant peut être appliqué plusieurs fois à une seule entité, comme suit :
<AttributeUsage(AttributeTargets.Class, AllowMultiple:=True)>
Class MultiUseAttr
Inherits Attribute
End Class
<MultiUseAttr(), MultiUseAttr()>
Class Class1
End Class
Dans ce cas, MultiUseAttr peut être appliqué à plusieurs reprises, car AllowMultiple est défini sur true. Les deux formats indiqués pour appliquer plusieurs attributs sont valides.
Si Inherited est défini sur false, l’attribut n’est pas hérité par les classes dérivées d’une classe attribuée. Par exemple:
<AttributeUsage(AttributeTargets.Class, Inherited:=False)>
Class Attr1
Inherits Attribute
End Class
<Attr1()>
Class BClass
End Class
Class DClass
Inherits BClass
End Class
Dans ce cas, Attr1 n’est pas appliqué à DClass par héritage.
Remarques
L’attribut AttributeUsage est un attribut à usage unique. Il ne peut pas être appliqué plusieurs fois à la même classe.
AttributeUsage est un alias pour AttributeUsageAttribute.
Pour plus d’informations, consultez Accès aux attributs à l’aide de la réflexion (Visual Basic).
Exemple :
L'exemple suivant montre l'effet des arguments Inherited et AllowMultiple sur l'attribut AttributeUsage, et comment les attributs personnalisés appliqués à une classe peuvent être énumérés.
' Create some custom attributes:
<AttributeUsage(System.AttributeTargets.Class, Inherited:=False)>
Class A1
Inherits System.Attribute
End Class
<AttributeUsage(System.AttributeTargets.Class)>
Class A2
Inherits System.Attribute
End Class
<AttributeUsage(System.AttributeTargets.Class, AllowMultiple:=True)>
Class A3
Inherits System.Attribute
End Class
' Apply custom attributes to classes:
<A1(), A2()>
Class BaseClass
End Class
<A3(), A3()>
Class DerivedClass
Inherits BaseClass
End Class
Public Class TestAttributeUsage
Sub Main()
Dim b As New BaseClass
Dim d As New DerivedClass
' Display custom attributes for each class.
Console.WriteLine("Attributes on Base Class:")
Dim attrs() As Object = b.GetType().GetCustomAttributes(True)
For Each attr In attrs
Console.WriteLine(attr)
Next
Console.WriteLine("Attributes on Derived Class:")
attrs = d.GetType().GetCustomAttributes(True)
For Each attr In attrs
Console.WriteLine(attr)
Next
End Sub
End Class
Exemple de sortie
Attributes on Base Class:
A1
A2
Attributes on Derived Class:
A3
A3
A2