Aracılığıyla paylaş


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, 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

Ayrıca bakınız