Compartilhar via


Criando atributos personalizados (guia de programação translation from VPE for Csharp)

Você pode criar seu próprios s atributo personalizado, definindo um atributo classe, uma classe que deriva direta ou indiretamente de Attribute, o que dificulta identificar atributo definições de metadados rápida e fácil. Suponha que você queira marca classes e estruturas com o nome do programador que escreveu classe ou struct.Você pode definir um personalizado Author atributo classe:

[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 de classe é o nome do atributo, Author. Ele é derivado de System.Attribute, portanto, é um personalizado atributo classe. Parâmetros do construtor são parâmetros posicionais do atributo personalizado, nesse caso, name, e quaisquer campos públicos de leitura / gravar ou propriedades são nomeadas parâmetros, nesse caso, version é o único chamado parâmetro. Observe o uso do AttributeUsage atributo para fazer o Author válido somente no atributo class e struct declarações.

Você pode usar esse novo atributo da seguinte maneira:

[Author("H. Ackerman", version = 1.1)]
class SampleClass
{
    // H. Ackerman's code goes here...
}

AttributeUsage possui um parâmetro nomeado, AllowMultiple, com o qual você pode tornar um atributo personalizado uso único ou multiuse.

[System.AttributeUsage(System.AttributeTargets.Class |
                       System.AttributeTargets.Struct,
                       AllowMultiple = true)  // multiuse attribute
]
public class Author : System.Attribute
[Author("H. Ackerman", version = 1.1)]
[Author("M. Knott", version = 1.2)]
class SampleClass
{
    // H. Ackerman's code goes here...
    // M. Knott's code goes here...
}
Observação:

Se sua classe de atributos contém uma propriedade, essa propriedade deve ser leitura-gravar.Não há suporte para propriedades somente gravar em classes de atributo em translation from VPE for Csharp.

Consulte também

Conceitos

Guia de Programação C#

Referência

Reflexo (guia de programação C#) 

Atributos (guia de programação C#)

Usando atributos (guia de programação translation from VPE for Csharp)

Destinos de atributo disambiguating (guia de programação translation from VPE for Csharp)

Acessando atributos com reflexo (C# programação guia)

System.Reflection

Date

History

Motivo

Julho de 2008

Observação adicional sobre o suporte de propriedade.

Correção de bug do conteúdo.