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çãoObservação

Se sua classe de atributo contém uma propriedade, essa propriedade deve ser leitura-gravação.

Consulte também

Referência

Reflexão (C# e Visual Basic)

Atributos (C# e Visual Basic)

Acessar atributos usando reflexão (C# e Visual Basic)

System.Reflection

AttributeUsage (C# e Visual Basic)

Conceitos

Guia de Programação C#

Codificando Atributos Personalizados

Outros recursos

Guia de programação Visual Basic