Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Вы можете создавать собственные настраиваемые атрибуты, определяя класс атрибутов, класс, производный напрямую или косвенно от 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
Замечание
Если класс атрибута содержит свойство, это свойство должно поддерживать чтение и запись.