Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ö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, enumerasyonun 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 durumda MultiUseAttr tekrar tekrar uygulanabilir çünkü AllowMultiple, true olarak ayarlanmıştır. Birden çok öznitelik uygulamak için gösterilen her iki biçim de geçerlidir.
Eğer Inheritedfalse olarak ayarlanırsa, öznitelikli bir sınıftan türetilen sınıflar tarafından öznitelik devralınmaz. Ö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, DClass için kalıtım yoluyla uygulanmaz.
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. Yansıma Kullanarak Özniteliklere Erişme (Visual Basic).
Örnek
Aşağıdaki örnek, Inherited ve AllowMultiple bağımsız değişkenlerinin AttributeUsage özniteliği üzerindeki etkisini ve bir sınıfa uygulanan özel özniteliklerin nasıl numaralandırılabileceğ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