Bagikan melalui


AttributeUsage (Visual Basic)

Menentukan bagaimana kelas atribut kustom dapat digunakan. AttributeUsage adalah atribut yang dapat diterapkan ke definisi atribut kustom untuk mengontrol bagaimana atribut baru dapat diterapkan. Pengaturan default terlihat seperti ini saat diterapkan secara eksplisit:

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

Dalam contoh ini, NewAttribute kelas dapat diterapkan ke entitas kode yang dapat diatribusikan atribut, tetapi hanya dapat diterapkan sekali ke setiap entitas. Ini diwariskan oleh kelas turunan ketika diterapkan ke kelas dasar.

Argumen AllowMultiple dan Inherited bersifat opsional, sehingga kode ini memiliki efek yang sama:

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

Argumen AttributeUsage pertama harus merupakan satu elemen enumerasi AttributeTargets atau lebih. Beberapa jenis target dapat ditautkan bersama dengan operator OR, seperti ini:

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

AllowMultiple Jika argumen diatur ke true, maka atribut yang dihasilkan dapat diterapkan lebih dari sekali ke satu entitas, seperti ini:

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

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

Dalam hal MultiUseAttr ini dapat diterapkan berulang kali karena AllowMultiple diatur ke true. Kedua format yang ditunjukkan untuk menerapkan beberapa atribut itu valid.

Jika Inherited diatur ke false, maka atribut tidak diwariskan oleh kelas yang berasal dari kelas yang diatribusikan. Contohnya:

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

<Attr1()>
Class BClass

End Class

Class DClass
    Inherits BClass
End Class

Dalam kasus ini Attr1 tidak diterapkan ke DClass melalui pewarisan.

Komentar

Atribut AttributeUsage adalah atribut penggunaan tunggal --atribut tidak dapat diterapkan lebih dari sekali ke kelas yang sama. AttributeUsage adalah alias untuk AttributeUsageAttribute.

Untuk informasi selengkapnya, lihat Mengakses Atribut dengan Menggunakan Pantulan (Visual Basic).

Contoh

Contoh berikut menunjukkan efek argumen Inherited dan AllowMultiple terhadap atribut AttributeUsage, dan bagaimana atribut kustom yang diterapkan ke kelas dapat diurutkan.

' 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

Sampel Output

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

Lihat juga