Criando os atributos personalizados (C# e Visual Basic)
Você pode criar seus próprios atributos personalizados, definindo uma classe de atributo, uma classe que deriva direta ou indiretamente Attribute, que aumenta as definições de atributos nos metadados rápida e fácil de identificar. Suponha que você deseja os tipos de marca com o nome do programador que escreveu o tipo. Você pode definir um personalizado Author classe de atributo:
<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
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class Author : System.Attribute
{
private string name;
public double version;
public Author(string name)
{
this.name = name;
version = 1.0;
}
}
O nome da classe é o nome do atributo, Author. Ela é derivada de System.Attribute, portanto, é uma classe de atributo personalizado. Os parâmetros do construtor são parâmetros de posição do atributo personalizado. Neste exemplo, name é um parâmetro posicional. Quaisquer campos públicos de leitura / gravação ou propriedades são parâmetros nomeadas. Nesse caso, version é o único parâmetro nomeado. Observe o uso da AttributeUsage atributo para fazer a Author o atributo é válido somente em classe e struct (Structure em Visual Basic) declarações.
Você pode usar esse novo atributo, como segue:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
[Author("P. Ackerman", version = 1.1)]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsagepossui um parâmetro nomeado, AllowMultiple, com o qual você pode fazer um uso único atributo personalizado ou multiuse. No exemplo de código a seguir, um atributo multiuse é criado.
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // multiuse attribute
]
public class Author : 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
[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...
}
Observação |
---|
Se sua classe de atributo contém uma propriedade, essa propriedade deve ser leitura-gravação. |
Consulte também
Referência
Acessar atributos usando reflexão (C# e Visual Basic)
AttributeUsage (C# e Visual Basic)
Conceitos
Codificando Atributos Personalizados