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 trueart arda AllowMultiple uygulanabilir. Birden çok öznitelik uygulamak için gösterilen her iki biçim de geçerlidir.

olarak ayarlanırsa Inheritedfalseö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

Ayrıca bkz.