Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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