Expand Minimize

AttributeTargets Enumeration

July 28, 2014

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)

[FlagsAttribute]
public enum AttributeTargets

Member nameDescription
AllAttribute can be applied to any application element.
AssemblyAttribute can be applied to an assembly.
ClassAttribute can be applied to a class.
ConstructorAttribute can be applied to a constructor.
DelegateAttribute can be applied to a delegate.
EnumAttribute can be applied to an enumeration.
EventAttribute can be applied to an event.
FieldAttribute can be applied to a field.
GenericParameterAttribute can be applied to a generic parameter.
NoteNote:
Currently, this attribute can be applied only in C#, Microsoft intermediate language (MSIL), and emitted code.
InterfaceAttribute can be applied to an interface.
MethodAttribute can be applied to a method.
ModuleAttribute can be applied to a module.
NoteNote:
Module refers to a portable executable file (.dll or.exe) and not a Visual Basic standard module.
ParameterAttribute can be applied to a parameter.
PropertyAttribute can be applied to a property.
ReturnValueAttribute can be applied to a return value.
StructAttribute 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.

NoteNote:

Visual Basic syntax currently does 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) {
        }
    }
}


Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2014 Microsoft