AttributeUsage (Visual Basic)
Özel öznitelik sınıfının nasıl kullanılabileceğini belirler. AttributeUsage
, yeni özniteliğin nasıl uygulanabileceğini denetlemek için özel öznitelik tanımlarına uygulanabilen bir özniteliktir. Varsayılan ayarlar açıkça uygulandığında şöyle görünür:
<System.AttributeUsage(System.AttributeTargets.All,
AllowMultiple:=False,
Inherited:=True)>
Class NewAttribute
Inherits System.Attribute
End Class
Bu örnekte sınıf, NewAttribute
öznitelik kullanabilen herhangi bir kod varlığına uygulanabilir, ancak her varlığa yalnızca bir kez uygulanabilir. Bir temel sınıfa uygulandığında türetilmiş sınıflar tarafından devralınır.
AllowMultiple
ve Inherited
bağımsız değişkenleri isteğe bağlıdır, bu nedenle bu kod aynı etkiye sahiptir:
<System.AttributeUsage(System.AttributeTargets.All)>
Class NewAttribute
Inherits System.Attribute
End Class
İlk AttributeUsage
bağımsız değişken, numaralandırmanın AttributeTargets bir veya daha fazla öğesi olmalıdır. Or işleciyle birden çok hedef türü birbirine bağlanabilir, örneğin:
<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field)>
Class NewPropertyOrFieldAttribute
Inherits Attribute
End Class
AllowMultiple
Bağımsız değişken olarak ayarlanırsatrue
, sonuçta elde edilen öznitelik tek bir varlığa birden çok kez uygulanabilir, örneğin:
<AttributeUsage(AttributeTargets.Class, AllowMultiple:=True)>
Class MultiUseAttr
Inherits Attribute
End Class
<MultiUseAttr(), MultiUseAttr()>
Class Class1
End Class
Bu durumdaMultiUseAttr
, olarak ayarlandığından true
art arda AllowMultiple
uygulanabilir. Birden çok öznitelik uygulamak için gösterilen her iki biçim de geçerlidir.
olarak ayarlanırsa Inherited
false
özniteliği, öznitelikli bir sınıftan türetilen sınıflar tarafından devralınır. Örneğin:
<AttributeUsage(AttributeTargets.Class, Inherited:=False)>
Class Attr1
Inherits Attribute
End Class
<Attr1()>
Class BClass
End Class
Class DClass
Inherits BClass
End Class
Bu durumda Attr1
devralma yoluyla uygulanmaz DClass
.
Açıklamalar
özniteliği AttributeUsage
tek kullanımlık bir özniteliktir; aynı sınıfa birden çok kez uygulanamaz. AttributeUsage
, için AttributeUsageAttributebir diğer addır.
Daha fazla bilgi için bkz. Düşünceler ion Kullanarak Özniteliklere Erişme (Visual Basic).
Örnek
Aşağıdaki örnek, ve AllowMultiple
bağımsız değişkenlerinin Inherited
özniteliğine etkisini ve bir sınıfa AttributeUsage
uygulanan özel özniteliklerin nasıl numaralandırılabildiğini gösterir.
' 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
Örnek Çıkış
Attributes on Base Class:
A1
A2
Attributes on Derived Class:
A3
A3
A2