Ö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.Attribute
tü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.