AttributeTargets Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica os elementos do aplicativo no qual ele é válido para aplicar um atributo.
Essa enumeração dá suporte a uma combinação bit a bit dos valores de membro.
public enum class AttributeTargets
[System.Flags]
public enum AttributeTargets
[System.Flags]
[System.Serializable]
public enum AttributeTargets
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum AttributeTargets
[<System.Flags>]
type AttributeTargets =
[<System.Flags>]
[<System.Serializable>]
type AttributeTargets =
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AttributeTargets =
Public Enum AttributeTargets
- Herança
- Atributos
Campos
All | 32767 | O atributo pode ser aplicado a qualquer elemento de aplicativo. |
Assembly | 1 | O atributo pode ser aplicado a um assembly. |
Class | 4 | O atributo pode ser aplicado a uma classe. |
Constructor | 32 | O atributo pode ser aplicado a um construtor. |
Delegate | 4096 | O atributo pode ser aplicado a um delegado. |
Enum | 16 | O atributo pode ser aplicado a uma enumeração. |
Event | 512 | O atributo pode ser aplicado a um evento. |
Field | 256 | O atributo pode ser aplicado a um campo. |
GenericParameter | 16384 | O atributo pode ser aplicado a um parâmetro genérico. Atualmente, esse atributo só pode ser aplicado no C#, no MSIL (Microsoft Intermediate Language) e no código emitido. |
Interface | 1024 | O atributo pode ser aplicado a uma interface. |
Method | 64 | O atributo pode ser aplicado a um método. |
Module | 2 | O atributo pode ser aplicado a um módulo. |
Parameter | 2048 | O atributo pode ser aplicado a um parâmetro. |
Property | 128 | O atributo pode ser aplicado a uma propriedade. |
ReturnValue | 8192 | O atributo pode ser aplicado a um valor retornado. |
Struct | 8 | Atributo pode ser aplicado a uma estrutura; ou seja, um tipo de valor. |
Exemplos
O exemplo a seguir ilustra a aplicação de atributos para vários destinos.
Observação
Visual Basic e sintaxe do Visual C++ atualmente não dão suporte à aplicação de atributos para parâmetros de tipo.
using namespace System;
namespace AttTargsCS
{
// This attribute is only valid on a class.
[AttributeUsage(AttributeTargets::Class)]
public ref class ClassTargetAttribute: public Attribute{};
// This attribute is only valid on a method.
[AttributeUsage(AttributeTargets::Method)]
public ref class MethodTargetAttribute: public Attribute{};
// This attribute is only valid on a constructor.
[AttributeUsage(AttributeTargets::Constructor)]
public ref class ConstructorTargetAttribute: public Attribute{};
// This attribute is only valid on a field.
[AttributeUsage(AttributeTargets::Field)]
public ref class FieldTargetAttribute: public Attribute{};
// This attribute is valid on a class or a method.
[AttributeUsage(AttributeTargets::Class|AttributeTargets::Method)]
public ref class ClassMethodTargetAttribute: public Attribute{};
// This attribute is valid on any target.
[AttributeUsage(AttributeTargets::All)]
public ref class AllTargetsAttribute: public Attribute{};
[ClassTarget]
[ClassMethodTarget]
[AllTargets]
public ref class TestClassAttribute
{
private:
[ConstructorTarget]
[AllTargets]
TestClassAttribute(){}
public:
[MethodTarget]
[ClassMethodTarget]
[AllTargets]
void Method1(){}
[FieldTarget]
[AllTargets]
int myInt;
static void Main(){}
};
}
using System;
namespace AttTargsCS {
// This attribute is only valid on a class.
[AttributeUsage(AttributeTargets.Class)]
public class ClassTargetAttribute : Attribute {
}
// This attribute is only valid on a method.
[AttributeUsage(AttributeTargets.Method)]
public class MethodTargetAttribute : Attribute {
}
// This attribute is only valid on a constructor.
[AttributeUsage(AttributeTargets.Constructor)]
public class ConstructorTargetAttribute : Attribute {
}
// This attribute is only valid on a field.
[AttributeUsage(AttributeTargets.Field)]
public class FieldTargetAttribute : Attribute {
}
// This attribute is valid on a class or a method.
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]
public class ClassMethodTargetAttribute : Attribute {
}
// This attribute is valid on a generic type parameter.
[AttributeUsage(AttributeTargets.GenericParameter)]
public class GenericParameterTargetAttribute : Attribute {
}
// This attribute is valid on any target.
[AttributeUsage(AttributeTargets.All)]
public class AllTargetsAttribute : Attribute {
}
[ClassTarget]
[ClassMethodTarget]
[AllTargets]
public class TestClassAttribute {
[ConstructorTarget]
[AllTargets]
TestClassAttribute() {
}
[MethodTarget]
[ClassMethodTarget]
[AllTargets]
public void Method1() {
}
[FieldTarget]
[AllTargets]
public int myInt;
public void GenericMethod<
[GenericParameterTarget, AllTargets] T>(T x) {
}
static void Main(string[] args) {
}
}
}
open System
// This attribute is only valid on a class.
[<AttributeUsage(AttributeTargets.Class)>]
type ClassTargetAttribute() =
inherit Attribute()
// This attribute is only valid on a method.
[<AttributeUsage(AttributeTargets.Method)>]
type MethodTargetAttribute() =
inherit Attribute()
// This attribute is only valid on a constructor.
[<AttributeUsage(AttributeTargets.Constructor)>]
type ConstructorTargetAttribute() =
inherit Attribute()
// This attribute is only valid on a field.
[<AttributeUsage(AttributeTargets.Field)>]
type FieldTargetAttribute() =
inherit Attribute()
// This attribute is valid on a class or a method.
[<AttributeUsage(AttributeTargets.Class ||| AttributeTargets.Method)>]
type ClassMethodTargetAttribute() =
inherit Attribute()
// This attribute is valid on a generic type parameter.
[<AttributeUsage(AttributeTargets.GenericParameter)>]
type GenericParameterTargetAttribute() =
inherit Attribute()
// This attribute is valid on any target.
[<AttributeUsage(AttributeTargets.All)>]
type AllTargetsAttribute() =
inherit Attribute()
[<ClassTarget>]
[<ClassMethodTarget>]
[<AllTargets>]
type TestClassAttribute [<ConstructorTarget>] [<AllTargets>] () =
[<FieldTarget>]
[<AllTargets>]
let myInt = 0
[<MethodTarget>]
[<ClassMethodTarget>]
[<AllTargets>]
member _.Method1() = ()
member _.GenericMethod<[<GenericParameterTarget; AllTargets>] 'T>(x: 'T) = ()
Module DemoModule
' This attribute is only valid on a class.
<AttributeUsage(AttributeTargets.Class)> _
Public Class ClassTargetAttribute
Inherits Attribute
End Class
' This attribute is only valid on a method.
<AttributeUsage(AttributeTargets.Method)> _
Public Class MethodTargetAttribute
Inherits Attribute
End Class
' This attribute is only valid on a constructor.
<AttributeUsage(AttributeTargets.Constructor)> _
Public Class ConstructorTargetAttribute
Inherits Attribute
End Class
' This attribute is only valid on a field.
<AttributeUsage(AttributeTargets.Field)> _
Public Class FieldTargetAttribute
Inherits Attribute
End Class
' This attribute is valid on a class or a method.
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Method)> _
Public Class ClassMethodTargetAttribute
Inherits Attribute
End Class
' This attribute is valid on any target.
<AttributeUsage(AttributeTargets.All)> _
Public Class AllTargetsAttribute
Inherits Attribute
End Class
<ClassTarget, _
ClassMethodTarget, _
AllTargets> _
Public Class TestClassAttribute
<ConstructorTarget, _
AllTargets> _
Public Sub New
End Sub
<MethodTarget, _
ClassMethodTarget, _
AllTargets> _
Public Sub Method1()
End Sub
<FieldTarget, _
AllTargets> _
Public myInt as Integer
End Class
Sub Main()
End Sub
End Module
Comentários
A AttributeUsageAttribute classe usa essa enumeração para especificar o tipo de elemento no qual é válido aplicar um atributo.
AttributeTargets Os valores de enumeração podem ser combinados com uma operação OR bit a bit para obter a combinação preferencial.