Megosztás:


AttributeUsage (Visual Basic)

Meghatározza, hogyan használható az egyéni attribútumosztály. AttributeUsage olyan attribútum, amely egyéni attribútumdefiníciókra alkalmazható az új attribútum alkalmazásának szabályozásához. Az alapértelmezett beállítások a következőképpen néznek ki, ha explicit módon alkalmazzák:

<System.AttributeUsage(System.AttributeTargets.All,
                   AllowMultiple:=False,
                   Inherited:=True)>
Class NewAttribute
    Inherits System.Attribute
End Class

Ebben a példában az NewAttribute osztály bármely attribútum-képes kód entitásra alkalmazható, de mindegyik entitásra csak egyszer alkalmazható. Amikor az alaposztályra alkalmazzák, a származtatott osztályok öröklik.

A AllowMultiple és Inherited argumentumok nem kötelezőek, így a kódnak ugyanaz a hatása van.

<System.AttributeUsage(System.AttributeTargets.All)>
Class NewAttribute
    Inherits System.Attribute
End Class

Az első AttributeUsage argumentumnak az AttributeTargets enumerálás egy vagy több elemének kell lennie. Az OR operátorral több céltípus is összekapcsolható, például:

<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field)>
Class NewPropertyOrFieldAttribute
    Inherits Attribute
End Class

Ha az AllowMultiple argumentum értéke truea következő, akkor az eredményként kapott attribútum több alkalommal is alkalmazható egyetlen entitásra, például:

<AttributeUsage(AttributeTargets.Class, AllowMultiple:=True)>
Class MultiUseAttr
    Inherits Attribute
End Class

<MultiUseAttr(), MultiUseAttr()>
Class Class1
End Class

Ebben az esetben MultiUseAttr többször is alkalmazható, mert AllowMultiple be van állítva.true A több attribútum alkalmazásához megjelenített mindkét formátum érvényes.

Ha Inherited a beállítás értéke false, akkor az attribútumot nem öröklik az attribútumként megadott osztályból származtatott osztályok. Például:

<AttributeUsage(AttributeTargets.Class, Inherited:=False)>
Class Attr1
    Inherits Attribute
End Class

<Attr1()>
Class BClass

End Class

Class DClass
    Inherits BClass
End Class

Ebben az esetben Attr1 nincs öröklés útján alkalmazva DClass-re.

Megjegyzések

Az AttributeUsage attribútum egy egyszer használatos attribútum – nem alkalmazható többször ugyanarra az osztályra. AttributeUsage egy alias AttributeUsageAttribute számára.

További információ: Attribútumok elérése tükröződés (Visual Basic) használatával.

példa

Az alábbi példa bemutatja, hogy a Inherited és AllowMultiple argumentumok hogyan hatnak a AttributeUsage attribútumra, valamint, hogy az osztályra alkalmazott egyéni attribútumok miként számlálhatók fel.

' 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

Mintakimenet

Attributes on Base Class:
A1
A2
Attributes on Derived Class:
A3
A3
A2

Lásd még