Aracılığıyla paylaş


Özel Öznitelikler Oluşturma (Visual Basic)

Meta verilerdeki öznitelik tanımlarını tanımlamayı hızlı ve kolay hale getiren, doğrudan veya dolaylı olarak öğesinden Attributetüretilen bir sınıf olan öznitelik sınıfını tanımlayarak kendi özel özniteliklerinizi oluşturabilirsiniz. Türleri, türü yazan programcının adıyla etiketlemek istediğinizi varsayalım. Özel Author bir öznitelik sınıfı tanımlayabilirsiniz:

<System.AttributeUsage(System.AttributeTargets.Class Or
                       System.AttributeTargets.Struct)>
Public Class Author
    Inherits System.Attribute
    Private name As String
    Public version As Double
    Sub New(ByVal authorName As String)
        name = authorName
        version = 1.0
    End Sub
End Class

Sınıf adı özniteliğin adıdır. Author öğesinden System.Attributetüretilir, bu nedenle özel bir öznitelik sınıfıdır. Oluşturucunun parametreleri, özel özniteliğin konumsal parametreleridir. Bu örnekte, name konumsal bir parametredir. Tüm genel okuma-yazma alanları veya özellikleri parametre olarak adlandırılır. Bu durumda, version tek adlandırılmış parametredir. özniteliğini AttributeUsage yalnızca sınıf ve Structure bildirimlerde geçerli hale getirmek için özniteliğinin Author kullanımına dikkat edin.

Bu yeni özniteliği aşağıdaki gibi kullanabilirsiniz:

<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
    ' P. Ackerman's code goes here...
End Class

AttributeUsage , AllowMultipleözel bir özniteliği tek kullanımlı veya çok kullanımlı hale getirebileceğiniz adlandırılmış bir parametresine sahiptir. Aşağıdaki kod örneğinde çok kullanımlı bir öznitelik oluşturulur.

' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
                       System.AttributeTargets.Struct,
                       AllowMultiple:=True)>
Public Class Author
    Inherits System.Attribute

Aşağıdaki kod örneğinde, aynı türdeki birden çok öznitelik bir sınıfa uygulanır.

<Author("P. Ackerman", Version:=1.1),
Author("R. Koch", Version:=1.2)>
Class SampleClass
    ' P. Ackerman's code goes here...
    ' R. Koch's code goes here...
End Class

Not

Öznitelik sınıfınız bir özellik içeriyorsa, bu özelliğin okuma-yazma olması gerekir.

Ayrıca bkz.