Creating Custom Attributes (Visual Basic) (Создание настраиваемых атрибутов (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
Примечание.
Если класс атрибутов содержит свойство, это свойство должно быть доступно для чтения и записи.
См. также
- System.Reflection
- Руководство по программированию на Visual Basic
- Написание настраиваемых атрибутов
- Reflection (Visual Basic) (Отражение (Visual Basic))
- Атрибуты (Visual Basic)
- Accessing Attributes by Using Reflection (Visual Basic) (Обращение к атрибутам с помощью отражения (Visual Basic))
- AttributeUsage (Visual Basic)