Criando atributos personalizados (C# e Visual Basic)
Você pode criar seus próprios atributos personalizados, definindo uma classe de atributo, uma classe que deriva diretamente ou indiretamente de Attribute, que aumenta as definições de atributos nos metadados rápida e fácil de identificar.Suponha que você queira 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, ele é uma classe de atributo personalizado.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 chamado de parameter.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ê poderia usar esse novo atributo da seguinte maneira:
<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 a qual pode tornar um atributo personalizado de uso único 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
Acesso a atributos usando reflexão (C# e Visual Basic)
AttributeUsage (C# e Visual Basic)
Conceitos
Gravar atributos personalizados