Attribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa a classe base para atributos personalizados.
public ref class Attribute abstract
public ref class Attribute abstract : System::Runtime::InteropServices::_Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
public abstract class Attribute
[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
[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
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
type Attribute = class
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type Attribute = class
interface _Attribute
[<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)>]
type Attribute = class
interface _Attribute
Public MustInherit Class Attribute
Public MustInherit Class Attribute
Implements _Attribute
- Herança
-
Attribute
- Derivado
- Atributos
- Implementações
Exemplos
O seguinte exemplo de código demonstra o uso de Attribute.
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.
*/
open System
// An enumeration of animals. Start at 1 (0 = uninitialized).
type Animal =
| Dog = 1
| Cat = 2
| Bird = 3
// A custom attribute to allow a target to have a pet.
type AnimalTypeAttribute(pet) =
inherit Attribute()
member val Pet = pet with get, set
// A test class where each method has its own pet.
type AnimalTypeTestClass() =
[<AnimalType(Animal.Dog)>]
member _.DogMethod() = ()
[<AnimalType(Animal.Cat)>]
member _.CatMethod() = ()
[<AnimalType(Animal.Bird)>]
member _.BirdMethod() = ()
let testClass = AnimalTypeTestClass()
let clsType = testClass.GetType()
// Iterate through all the methods of the class.
for mInfo in clsType.GetMethods() do
// Iterate through all the Attributes for each method.
for attr in Attribute.GetCustomAttributes mInfo do
// Check for the AnimalType attribute.
if attr.GetType() = typeof<AnimalTypeAttribute> then
printfn $"Method {mInfo.Name} has a pet {(attr :?> AnimalTypeAttribute).Pet} attribute."
// Output:
// Method DogMethod has a pet Dog attribute.
// Method CatMethod has a pet Cat attribute.
// Method BirdMethod has a pet Bird attribute.
Imports System.Reflection
Public Module CustomAttrVB
' An enumeration of animals. Start at 1 (0 = uninitialized).
Public Enum Animal
' Pets
Dog = 1
Cat
Bird
End Enum
' Visual Basic requires the AttributeUsage be specified.
' A custom attribute to allow a target to have a pet.
<AttributeUsage(AttributeTargets.Method)> _
Public Class AnimalTypeAttribute
Inherits Attribute
' The constructor is called when the attribute is set.
Public Sub New(ByVal animal As Animal)
Me.thePet = animal
End Sub
' Keep a variable internally ...
Protected thePet As Animal
' .. and show a copy to the outside world.
Public Property Pet() As Animal
Get
Return thePet
End Get
Set(ByVal Value As Animal)
thePet = Value
End Set
End Property
End Class
' A test class where each method has its own pet.
Class AnimalTypeTestClass
<AnimalType(Animal.Dog)> _
Public Sub DogMethod()
End Sub
<AnimalType(Animal.Cat)> _
Public Sub CatMethod()
End Sub
<AnimalType(Animal.Bird)> _
Public Sub BirdMethod()
End Sub
End Class
' The runtime test.
Sub Main()
Dim testClass As New AnimalTypeTestClass()
Dim tcType As Type = testClass.GetType()
Dim mInfo As MethodInfo
' Iterate through all the methods of the class.
For Each mInfo In tcType.GetMethods()
Dim attr As Attribute
' Iterate through all the attributes of the method.
For Each attr In Attribute.GetCustomAttributes(mInfo)
If TypeOf attr Is AnimalTypeAttribute Then
Dim attrCustom As AnimalTypeAttribute = _
CType(attr, AnimalTypeAttribute)
Console.WriteLine("Method {0} has a pet {1} attribute.", _
mInfo.Name(), attrCustom.Pet.ToString())
End If
Next
Next
End Sub
End Module
' Output:
' Method DogMethod has a pet Dog attribute.
' Method CatMethod has a pet Cat attribute.
' Method BirdMethod has a pet Bird attribute.
Observações
A Attribute classe associa informação de sistema pré-definida ou informação personalizada definida pelo utilizador a um elemento alvo. Um elemento alvo pode ser uma assembly, classe, construtor, delegado, enum, evento, campo, interface, método, módulo de ficheiro executável portátil, parâmetro, propriedade, valor de retorno, struct ou outro atributo.
A informação fornecida por um atributo também é conhecida como metadados. Os metadados podem ser analisados em tempo de execução pela sua aplicação para controlar como o programa processa os dados, ou antes da execução por ferramentas externas para controlar como a sua própria aplicação é processada ou mantida. Por exemplo, o .NET pré-define e usa tipos de atributos para controlar o comportamento em tempo de execução, e algumas linguagens de programação usam tipos de atributos para representar características da linguagem não diretamente suportadas pelo sistema comum de tipos .NET.
Todos os tipos de atributos derivam direta ou indiretamente da Attribute classe. Os atributos podem ser aplicados a qualquer elemento alvo; múltiplos atributos podem ser aplicados ao mesmo elemento alvo; e os atributos podem ser herdados por um elemento derivado de um elemento alvo. Use a AttributeTargets classe para especificar o elemento alvo ao qual o atributo é aplicado.
A Attribute classe fornece métodos convenientes para recuperar e testar atributos personalizados. Para mais informações sobre a utilização de atributos, consulte Aplicação de Atributos e Atributos.
Construtores
| Name | Description |
|---|---|
| Attribute() |
Inicializa uma nova instância da Attribute classe. |
Propriedades
| Name | Description |
|---|---|
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. |
| GetCustomAttribute(Assembly, Type, Boolean) |
Recupera um atributo personalizado aplicado a uma assembleia. Os parâmetros especificam a montagem, o tipo do atributo personalizado a procurar e uma opção de pesquisa ignorada. |
| GetCustomAttribute(Assembly, Type) |
Recupera um atributo personalizado aplicado a uma montagem especificada. Os parâmetros especificam a montagem e o tipo do atributo personalizado a procurar. |
| 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 procurar e se deve procurar antepassados 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 procurar. |
| 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 procurar 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 procurar. |
| 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 procurar e se deve procurar antepassados do parâmetro do 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 procurar. |
| GetCustomAttributes(Assembly, Boolean) |
Recupera um array dos atributos personalizados aplicados a uma assembleia. Os parâmetros especificam a montagem e uma opção de pesquisa ignorada. |
| GetCustomAttributes(Assembly, Type, Boolean) |
Recupera um array dos atributos personalizados aplicados a uma assembleia. Os parâmetros especificam a montagem, o tipo do atributo personalizado a procurar e uma opção de pesquisa ignorada. |
| GetCustomAttributes(Assembly, Type) |
Recupera um array dos atributos personalizados aplicados a uma assembleia. Os parâmetros especificam a montagem e o tipo do atributo personalizado a procurar. |
| GetCustomAttributes(Assembly) |
Recupera um array dos atributos personalizados aplicados a uma assembleia. Um parâmetro especifica a montagem. |
| GetCustomAttributes(MemberInfo, Boolean) |
Recupera um array dos atributos personalizados aplicados a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a procurar e se deve procurar antepassados do membro. |
| GetCustomAttributes(MemberInfo, Type, Boolean) |
Recupera um array dos atributos personalizados aplicados a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a procurar e se deve procurar antepassados do membro. |
| GetCustomAttributes(MemberInfo, Type) |
Recupera um array dos atributos personalizados aplicados a um membro de um tipo. Os parâmetros especificam o membro e o tipo do atributo personalizado a procurar. |
| GetCustomAttributes(MemberInfo) |
Recupera um array dos atributos personalizados aplicados a um membro de um tipo. Um parâmetro especifica o membro. |
| GetCustomAttributes(Module, Boolean) |
Recupera um array 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 um array dos atributos personalizados aplicados a um módulo. Os parâmetros especificam o módulo, o tipo do atributo personalizado a procurar e uma opção de pesquisa ignorada. |
| GetCustomAttributes(Module, Type) |
Recupera um array dos atributos personalizados aplicados a um módulo. Os parâmetros especificam o módulo e o tipo do atributo personalizado a procurar. |
| GetCustomAttributes(Module) |
Recupera um array dos atributos personalizados aplicados a um módulo. Um parâmetro especifica o módulo. |
| GetCustomAttributes(ParameterInfo, Boolean) |
Recupera um array dos atributos personalizados aplicados a um parâmetro de método. Os parâmetros especificam o parâmetro do método e se deve pesquisar antepassados do parâmetro do método. |
| GetCustomAttributes(ParameterInfo, Type, Boolean) |
Recupera um array 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 procurar e se deve procurar antepassados do parâmetro do método. |
| GetCustomAttributes(ParameterInfo, Type) |
Recupera um array 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 procurar. |
| GetCustomAttributes(ParameterInfo) |
Recupera um array dos atributos personalizados aplicados a um parâmetro de método. Um parâmetro especifica o parâmetro do método. |
| GetHashCode() |
Devolve o código de hash para esta instância. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. |
| IsDefined(Assembly, Type, Boolean) |
Determina se algum atributo personalizado é aplicado a uma assembleia. Os parâmetros especificam a montagem, o tipo do atributo personalizado a procurar e uma opção de pesquisa ignorada. |
| IsDefined(Assembly, Type) |
Determina se algum atributo personalizado é aplicado a uma assembleia. Os parâmetros especificam a montagem e o tipo do atributo personalizado a procurar. |
| IsDefined(MemberInfo, Type, Boolean) |
Determina se algum atributo personalizado é aplicado a um membro de um tipo. Os parâmetros especificam o membro, o tipo do atributo personalizado a procurar e se deve procurar antepassados do membro. |
| IsDefined(MemberInfo, Type) |
Determina se algum atributo personalizado é aplicado a um membro de um tipo. Os parâmetros especificam o membro e o tipo do atributo personalizado a procurar. |
| IsDefined(Module, Type, Boolean) |
Determina se algum atributo personalizado é aplicado a um módulo. Os parâmetros especificam o módulo, o tipo do atributo personalizado a procurar e uma opção de pesquisa ignorada. |
| IsDefined(Module, Type) |
Determina se algum atributo personalizado de um tipo especificado é aplicado a um módulo. Os parâmetros especificam o módulo e o tipo do atributo personalizado a procurar. |
| IsDefined(ParameterInfo, Type, Boolean) |
Determina se algum 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 procurar e se deve procurar antepassados do parâmetro do método. |
| IsDefined(ParameterInfo, Type) |
Determina se algum 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 procurar. |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para 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) |
Proporciona acesso a propriedades e métodos expostos por um objeto. |
Aplica-se a
Segurança de Thread
Este tipo é seguro para fios.