Compartilhar via


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çã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)

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

System.Reflection

AttributeUsage (C# e Visual Basic)

Conceitos

Guia de programação do C#

Gravar atributos personalizados

Outros recursos

Guia de programação de Visual Basic