Specifies the application elements on which it is valid to apply an attribute.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
Namespace: SystemAssembly: mscorlib (in mscorlib.dll)
<[%$TOPIC/fa1240fs_en-us_VS_110_2_0_0_0_0%]> _
<[%$TOPIC/fa1240fs_en-us_VS_110_2_0_0_0_1%](True)> _
<[%$TOPIC/fa1240fs_en-us_VS_110_2_0_0_0_2%]> _
Public Enumeration AttributeTargets
[[%$TOPIC/fa1240fs_en-us_VS_110_2_0_1_0_0%]]
[[%$TOPIC/fa1240fs_en-us_VS_110_2_0_1_0_1%](true)]
[[%$TOPIC/fa1240fs_en-us_VS_110_2_0_1_0_2%]]
public enum AttributeTargets
[[%$TOPIC/fa1240fs_en-us_VS_110_2_0_2_0_0%]]
[[%$TOPIC/fa1240fs_en-us_VS_110_2_0_2_0_1%](true)]
[[%$TOPIC/fa1240fs_en-us_VS_110_2_0_2_0_2%]]
public enum class AttributeTargets
[<[%$TOPIC/fa1240fs_en-us_VS_110_2_0_3_0_0%]>]
[<[%$TOPIC/fa1240fs_en-us_VS_110_2_0_3_0_1%](true)>]
[<[%$TOPIC/fa1240fs_en-us_VS_110_2_0_3_0_2%]>]
type AttributeTargets
| Member name | Description | |||
|---|---|---|---|---|
![]() | Assembly | Attribute can be applied to an assembly. | ||
![]() | Module | Attribute can be applied to a module.
| ||
![]() | Class | Attribute can be applied to a class. | ||
![]() | Struct | Attribute can be applied to a structure; that is, a value type. | ||
![]() | Enum | Attribute can be applied to an enumeration. | ||
![]() | Constructor | Attribute can be applied to a constructor. | ||
![]() | Method | Attribute can be applied to a method. | ||
![]() | Property | Attribute can be applied to a property. | ||
![]() | Field | Attribute can be applied to a field. | ||
![]() | Event | Attribute can be applied to an event. | ||
![]() | Interface | Attribute can be applied to an interface. | ||
![]() | Parameter | Attribute can be applied to a parameter. | ||
![]() | Delegate | Attribute can be applied to a delegate. | ||
![]() | ReturnValue | Attribute can be applied to a return value. | ||
![]() | GenericParameter | Attribute can be applied to a generic parameter.
| ||
![]() | All | Attribute can be applied to any application element. |
The AttributeUsageAttribute class uses this enumeration to specify the kind of element on which it is valid to apply an attribute.
AttributeTargets enumeration values can be combined with a bitwise OR operation to get the preferred combination.
The following example illustrates the application of attributes to various targets.
Note |
|---|
Visual Basic and Visual C++ syntax currently do not support the application of attributes to type parameters. |
Imports System
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
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) {
}
}
}
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(){}
};
}
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.png)
Note