Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode criar seus próprios atributos personalizados definindo uma classe de atributo, uma classe que deriva direta ou indiretamente de Attribute. Isso torna a identificação de definições de atributos em metadados rápida e fácil. Suponha que você queira marcar tipos com o nome do programador que escreveu o tipo. Você pode definir uma classe de atributo personalizada 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
O nome da classe é o nome do atributo. Author Ela é derivada de System.Attribute, portanto, é uma classe de atributo personalizada. Os parâmetros do construtor são os parâmetros posicionais do atributo personalizado. Neste exemplo, name é um parâmetro posicional. Quaisquer propriedades ou campos públicos de leitura/gravação são chamados de parâmetros. Nesse caso, version é o único parâmetro nomeado. Observe o uso do AttributeUsage atributo para tornar o Author atributo válido somente em classes e Structure declarações.
Você pode usar esse novo atributo da seguinte maneira:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
AttributeUsage tem um parâmetro nomeado, AllowMultiplecom o qual você pode fazer um atributo personalizado de uso único ou multiutilização. No exemplo de código a seguir, um atributo multiuso é criado.
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
No exemplo de código a seguir, vários atributos do mesmo tipo são aplicados a uma classe.
<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
Observação
Se sua classe de atributos contém uma propriedade, essa propriedade deve ser de leitura/gravação.