AttributeTargets Enumeration
 

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:   System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum AttributeTargets
[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum class AttributeTargets
[<SerializableAttribute>]
[<FlagsAttribute>]
[<ComVisibleAttribute(true)>]
type AttributeTargets
<SerializableAttribute>
<FlagsAttribute>
<ComVisibleAttribute(True)>
Public Enumeration AttributeTargets
Member nameDescription
All

Attribute can be applied to any application element.

Assembly

Attribute can be applied to an assembly.

Class

Attribute can be applied to a class.

Constructor

Attribute can be applied to a constructor.

Delegate

Attribute can be applied to a delegate.

Enum

Attribute can be applied to an enumeration.

Event

Attribute can be applied to an event.

Field

Attribute can be applied to a field.

GenericParameter

Attribute can be applied to a generic parameter.

Interface

Attribute can be applied to an interface.

Method

Attribute can be applied to a method.

Module

Attribute can be applied to a module.

Parameter

Attribute can be applied to a parameter.

Property

Attribute can be applied to a property.

ReturnValue

Attribute can be applied to a return value.

Struct

Attribute can be applied to a structure; that is, a value type.

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.

System_CAPS_noteNote

Visual Basic and Visual C++ syntax currently do not support the application of attributes to type parameters.

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) {
        }
    }
}
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 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(){}

   };

}
Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top