Ler em inglês

Compartilhar via


Attribute Classe

Definição

Representa a classe base para atributos personalizados.

C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
public abstract class Attribute
C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
Herança
Attribute
Derivado
Atributos
Implementações

Exemplos

O exemplo de código a seguir demonstra o uso de Attribute.

C#
using System;
using System.Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum Animal {
    // Pets.
    Dog = 1,
    Cat,
    Bird,
}

// A custom attribute to allow a target to have a pet.
public class AnimalTypeAttribute : Attribute {
    // The constructor is called when the attribute is set.
    public AnimalTypeAttribute(Animal pet) {
        thePet = pet;
    }

    // Keep a variable internally ...
    protected Animal thePet;

    // .. and show a copy to the outside world.
    public Animal Pet {
        get { return thePet; }
        set { thePet = value; }
    }
}

// A test class where each method has its own pet.
class AnimalTypeTestClass {
    [AnimalType(Animal.Dog)]
    public void DogMethod() {}

    [AnimalType(Animal.Cat)]
    public void CatMethod() {}

    [AnimalType(Animal.Bird)]
    public void BirdMethod() {}
}

class DemoClass {
    static void Main(string[] args) {
        AnimalTypeTestClass testClass = new AnimalTypeTestClass();
        Type type = testClass.GetType();
        // Iterate through all the methods of the class.
        foreach(MethodInfo mInfo in type.GetMethods()) {
            // Iterate through all the Attributes for each method.
            foreach (Attribute attr in
                Attribute.GetCustomAttributes(mInfo)) {
                // Check for the AnimalType attribute.
                if (attr.GetType() == typeof(AnimalTypeAttribute))
                    Console.WriteLine(
                        "Method {0} has a pet {1} attribute.",
                        mInfo.Name, ((AnimalTypeAttribute)attr).Pet);
            }
        }
    }
}
/*
 * Output:
 * Method DogMethod has a pet Dog attribute.
 * Method CatMethod has a pet Cat attribute.
 * Method BirdMethod has a pet Bird attribute.
 */

Comentários

A classe Attribute associa informações predefinidas do sistema ou informações personalizadas definidas pelo usuário a um elemento de destino. Um elemento de destino pode ser um assembly, classe, construtor, delegado, enumeração, evento, campo, interface, método, módulo de arquivo executável portátil, parâmetro, propriedade, valor de retorno, struct ou outro atributo.

As informações fornecidas por um atributo também são conhecidas como metadados. Os metadados podem ser examinados em tempo de execução pelo aplicativo para controlar como o programa processa dados ou antes do tempo de execução por ferramentas externas para controlar como o próprio aplicativo é processado ou mantido. Por exemplo, o .NET predefini e usa tipos de atributo para controlar o comportamento em tempo de execução, e algumas linguagens de programação usam tipos de atributo para representar recursos de linguagem que não são diretamente compatíveis com o sistema de tipos comuns do .NET.

Todos os tipos de atributo derivam direta ou indiretamente da classe Attribute. Os atributos podem ser aplicados a qualquer elemento de destino; vários atributos podem ser aplicados ao mesmo elemento de destino; e atributos podem ser herdados por um elemento derivado de um elemento de destino. Use a classe AttributeTargets para especificar o elemento de destino ao qual o atributo é aplicado.

A classe Attribute fornece métodos convenientes para recuperar e testar atributos personalizados. Para obter mais informações sobre como usar atributos, consulte Aplicando atributos e atributos .

Construtores

Attribute()

Inicializa uma nova instância da classe Attribute.

Propriedades

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para esse Attribute.

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

GetCustomAttribute(Assembly, Type, Boolean)

Recupera um atributo personalizado aplicado a um assembly. Os parâmetros especificam o assembly, o tipo do atributo personalizado a ser pesquisado e uma opção de pesquisa ignorada.

GetCustomAttribute(Assembly, Type)

Recupera um atributo personalizado aplicado a um assembly especificado. Os parâmetros especificam o assembly e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera um atributo personalizado aplicado a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do membro.

GetCustomAttribute(MemberInfo, Type)

Recupera um atributo personalizado aplicado a um membro de um tipo. Os parâmetros especificam o membro e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttribute(Module, Type, Boolean)

Recupera um atributo personalizado aplicado a um módulo. Os parâmetros especificam o módulo, o tipo do atributo personalizado a ser pesquisado e uma opção de pesquisa ignorada.

GetCustomAttribute(Module, Type)

Recupera um atributo personalizado aplicado a um módulo. Os parâmetros especificam o módulo e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Recupera um atributo personalizado aplicado a um parâmetro de método. Os parâmetros especificam o parâmetro do método, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do parâmetro de método.

GetCustomAttribute(ParameterInfo, Type)

Recupera um atributo personalizado aplicado a um parâmetro de método. Os parâmetros especificam o parâmetro do método e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttributes(Assembly, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um assembly. Os parâmetros especificam o assembly e uma opção de pesquisa ignorada.

GetCustomAttributes(Assembly, Type, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um assembly. Os parâmetros especificam o assembly, o tipo do atributo personalizado a ser pesquisado e uma opção de pesquisa ignorada.

GetCustomAttributes(Assembly, Type)

Recupera uma matriz dos atributos personalizados aplicados a um assembly. Os parâmetros especificam o assembly e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttributes(Assembly)

Recupera uma matriz dos atributos personalizados aplicados a um assembly. Um parâmetro especifica o assembly.

GetCustomAttributes(MemberInfo, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do membro.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do membro.

GetCustomAttributes(MemberInfo, Type)

Recupera uma matriz dos atributos personalizados aplicados a um membro de um tipo. Os parâmetros especificam o membro e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttributes(MemberInfo)

Recupera uma matriz dos atributos personalizados aplicados a um membro de um tipo. Um parâmetro especifica o membro.

GetCustomAttributes(Module, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um módulo. Os parâmetros especificam o módulo e uma opção de pesquisa ignorada.

GetCustomAttributes(Module, Type, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um módulo. Os parâmetros especificam o módulo, o tipo do atributo personalizado a ser pesquisado e uma opção de pesquisa ignorada.

GetCustomAttributes(Module, Type)

Recupera uma matriz dos atributos personalizados aplicados a um módulo. Os parâmetros especificam o módulo e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttributes(Module)

Recupera uma matriz dos atributos personalizados aplicados a um módulo. Um parâmetro especifica o módulo.

GetCustomAttributes(ParameterInfo, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um parâmetro de método. Os parâmetros especificam o parâmetro do método e se os ancestrais do parâmetro de método devem ser pesquisados.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Recupera uma matriz dos atributos personalizados aplicados a um parâmetro de método. Os parâmetros especificam o parâmetro do método, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do parâmetro de método.

GetCustomAttributes(ParameterInfo, Type)

Recupera uma matriz dos atributos personalizados aplicados a um parâmetro de método. Os parâmetros especificam o parâmetro do método e o tipo do atributo personalizado a ser pesquisado.

GetCustomAttributes(ParameterInfo)

Recupera uma matriz dos atributos personalizados aplicados a um parâmetro de método. Um parâmetro especifica o parâmetro do método.

GetHashCode()

Retorna o código hash dessa instância.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

IsDefined(Assembly, Type, Boolean)

Determina se os atributos personalizados são aplicados a um assembly. Os parâmetros especificam o assembly, o tipo do atributo personalizado a ser pesquisado e uma opção de pesquisa ignorada.

IsDefined(Assembly, Type)

Determina se os atributos personalizados são aplicados a um assembly. Os parâmetros especificam o assembly e o tipo do atributo personalizado a ser pesquisado.

IsDefined(MemberInfo, Type, Boolean)

Determina se os atributos personalizados são aplicados a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do membro.

IsDefined(MemberInfo, Type)

Determina se os atributos personalizados são aplicados a um membro de um tipo. Os parâmetros especificam o membro e o tipo do atributo personalizado a ser pesquisado.

IsDefined(Module, Type, Boolean)

Determina se os atributos personalizados são aplicados a um módulo. Os parâmetros especificam o módulo, o tipo do atributo personalizado a ser pesquisado e uma opção de pesquisa ignorada.

IsDefined(Module, Type)

Determina se os atributos personalizados de um tipo especificado são aplicados a um módulo. Os parâmetros especificam o módulo e o tipo do atributo personalizado a ser pesquisado.

IsDefined(ParameterInfo, Type, Boolean)

Determina se os atributos personalizados são aplicados a um parâmetro de método. Os parâmetros especificam o parâmetro do método, o tipo do atributo personalizado a ser pesquisado e se deseja pesquisar ancestrais do parâmetro de método.

IsDefined(ParameterInfo, Type)

Determina se os atributos personalizados são aplicados a um parâmetro de método. Os parâmetros especificam o parâmetro do método e o tipo do atributo personalizado a ser pesquisado.

Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo de uma interface.

_Attribute.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Acesso thread-safe

Esse tipo é thread safe.

Confira também