Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Avgör hur en anpassad attributklass kan användas.
AttributeUsage är ett attribut som kan tillämpas på anpassade attributdefinitioner för att styra hur det nya attributet kan tillämpas. Standardinställningarna ser ut så här när de tillämpas explicit:
<System.AttributeUsage(System.AttributeTargets.All,
AllowMultiple:=False,
Inherited:=True)>
Class NewAttribute
Inherits System.Attribute
End Class
I det här exemplet NewAttribute kan klassen tillämpas på valfri attribut-kapabel kodentitet, men kan endast tillämpas en gång på varje entitet. Den ärvs av härledda klasser när den tillämpas på en basklass.
Argumenten AllowMultiple och Inherited är valfria, så den här koden har samma effekt:
<System.AttributeUsage(System.AttributeTargets.All)>
Class NewAttribute
Inherits System.Attribute
End Class
Det första AttributeUsage argumentet måste vara ett eller flera element i AttributeTargets uppräkningen. Flera måltyper kan länkas tillsammans med OR-operatorn, så här:
<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field)>
Class NewPropertyOrFieldAttribute
Inherits Attribute
End Class
AllowMultiple Om argumentet är inställt på truekan det resulterande attributet tillämpas mer än en gång på en enda entitet, så här:
<AttributeUsage(AttributeTargets.Class, AllowMultiple:=True)>
Class MultiUseAttr
Inherits Attribute
End Class
<MultiUseAttr(), MultiUseAttr()>
Class Class1
End Class
I det här fallet MultiUseAttr kan tillämpas upprepade gånger eftersom AllowMultiple är inställt på true. Båda formaten som visas för att tillämpa flera attribut är giltiga.
Om Inherited är inställt på falseärvs inte attributet av klasser som härleds från en klass som tillskrivs. Till exempel:
<AttributeUsage(AttributeTargets.Class, Inherited:=False)>
Class Attr1
Inherits Attribute
End Class
<Attr1()>
Class BClass
End Class
Class DClass
Inherits BClass
End Class
I det här fallet Attr1 tillämpas inte på DClass via arv.
Anmärkningar
Attributet AttributeUsage är ett engångsattribut – det kan inte tillämpas mer än en gång på samma klass.
AttributeUsage är ett alias för AttributeUsageAttribute.
Mer information finns i Accessing Attributes by Using Reflection (Visual Basic).
Exempel
I följande exempel visas effekten av argumenten Inherited och AllowMultiple för AttributeUsage attributet och hur de anpassade attribut som tillämpas på en klass kan räknas upp.
' 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
Exempelutdata
Attributes on Base Class:
A1
A2
Attributes on Derived Class:
A3
A3
A2