AttributeUsage (Visual Basic)
Détermine de quelle manière une classe d’attributs personnalisés peut être utilisée. AttributeUsage
est un attribut qui peut être appliqué à des définitions d’attributs personnalisés pour contrôler le mode d’application du nouvel attribut. Voici le code quand les paramètres par défaut sont appliqués de manière explicite :
<System.AttributeUsage(System.AttributeTargets.All,
AllowMultiple:=False,
Inherited:=True)>
Class NewAttribute
Inherits System.Attribute
End Class
Dans cet exemple, la classe NewAttribute
peut être appliquée à toutes les entités de code acceptant un attribut, mais uniquement une fois par entité. Elle est héritée par les classes dérivées quand elle est appliquée à une classe de base.
Les arguments AllowMultiple
et Inherited
étant facultatifs, ce code produit le même résultat :
<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 de 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 qui en résulte peut être appliqué plusieurs fois à une même 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 qui sont dérivées d’une classe avec attributs. 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.
Notes
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 la page Accéder à des attributs grâce à la réflexion (Visual Basic).
Exemple
L’exemple suivant illustre l’effet des arguments Inherited
et AllowMultiple
sur l’attribut AttributeUsage
, et la manière dont 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
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour