Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bepaalt hoe een aangepaste kenmerkklasse kan worden gebruikt.
AttributeUsage is een kenmerk dat kan worden toegepast op aangepaste kenmerkdefinities om te bepalen hoe het nieuwe kenmerk kan worden toegepast. De standaardinstellingen zien er als volgt uit wanneer deze expliciet worden toegepast:
<System.AttributeUsage(System.AttributeTargets.All,
AllowMultiple:=False,
Inherited:=True)>
Class NewAttribute
Inherits System.Attribute
End Class
In dit voorbeeld kan de NewAttribute klasse worden toegepast op elke code-entiteit met kenmerken, maar kan deze slechts één keer worden toegepast op elke entiteit. Het wordt overgenomen door afgeleide klassen wanneer deze worden toegepast op een basisklasse.
De AllowMultiple en Inherited argumenten zijn optioneel, dus deze code heeft hetzelfde effect:
<System.AttributeUsage(System.AttributeTargets.All)>
Class NewAttribute
Inherits System.Attribute
End Class
Het eerste AttributeUsage argument moet een of meer elementen van de AttributeTargets opsomming zijn. Meerdere doeltypen kunnen worden gekoppeld aan de OR-operator, zoals deze:
<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field)>
Class NewPropertyOrFieldAttribute
Inherits Attribute
End Class
Als het AllowMultiple argument is ingesteld op true, kan het resulterende kenmerk meerdere keren worden toegepast op één entiteit, zoals:
<AttributeUsage(AttributeTargets.Class, AllowMultiple:=True)>
Class MultiUseAttr
Inherits Attribute
End Class
<MultiUseAttr(), MultiUseAttr()>
Class Class1
End Class
In dit geval kan MultiUseAttr herhaaldelijk worden toegepast omdat AllowMultiple is ingesteld op true. Beide indelingen die worden weergegeven voor het toepassen van meerdere kenmerken, zijn geldig.
Als Inherited is ingesteld op false, wordt het kenmerk niet overgenomen door klassen die zijn afgeleid van een klasse waaraan het kenmerk is toegekend. Voorbeeld:
<AttributeUsage(AttributeTargets.Class, Inherited:=False)>
Class Attr1
Inherits Attribute
End Class
<Attr1()>
Class BClass
End Class
Class DClass
Inherits BClass
End Class
In dit geval wordt Attr1 niet toegepast op DClass via overerving.
Opmerkingen
Het kenmerk is een kenmerk voor eenmalig gebruik. Het AttributeUsage kenmerk kan niet meer dan één keer worden toegepast op dezelfde klasse.
AttributeUsage is een alias voor AttributeUsageAttribute.
Zie Toegang tot Attributen met Reflectie (Visual Basic) voor meer informatie.
Voorbeeld
In het volgende voorbeeld ziet u het effect van de Inherited en AllowMultiple argumenten op het AttributeUsage kenmerk en hoe de aangepaste kenmerken die op een klasse worden toegepast, kunnen worden geïnventariseerd.
' 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
Voorbeelduitvoer
Attributes on Base Class:
A1
A2
Attributes on Derived Class:
A3
A3
A2