创建自定义特性 (Visual Basic)
可通过定义特性类创建自己的自定义特性,特性类是直接或间接派生自 Attribute 的类,可快速轻松地识别元数据中的特性定义。 假设希望使用编写类型的程序员的姓名来标记该类型。 可能需要定义一个自定义 Author
特性类:
<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
类名是该特性的名称,即 Author
。 由于该类派生自 System.Attribute
,因此它是一个自定义特性类。 构造函数的参数是自定义特性的位置参数。 在此示例中,name
是位置参数。 所有公共读写字段或属性都是命名参数。 在本例中,version
是唯一的命名参数。 请注意,使用 AttributeUsage
特性可使 Author
特性仅对类和 Structure
声明有效。
可按如下方式使用这一新特性:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
AttributeUsage
有一个命名参数 AllowMultiple
,通过此命名参数可一次或多次使用自定义特性。 下面的代码示例创建了一个多用特性。
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
在下面的代码示例中,某个类应用了同一类型的多个特性。
<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
注意
如果特性类包含属性,则该属性必须为读写属性。