Movatterモバイル変換


[0]ホーム

URL:


Skip to main contentSkip to in-page navigation

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Download Microsoft EdgeMore info about Internet Explorer and Microsoft Edge
Table of contentsExit focus mode

Attribute Class

Definition

Namespace:
System
Assemblies:
mscorlib.dll, System.Runtime.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Attribute.cs
Source:
Attribute.cs
Source:
Attribute.cs
Source:
Attribute.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Represents the base class for custom attributes.

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 AttributeImplements _Attribute
Inheritance
Attribute
Derived
Attributes
Implements

Examples

The following code example demonstrates the usage ofAttribute.

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.ReflectionPublic 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 SubEnd Module' Output:' Method DogMethod has a pet Dog attribute.' Method CatMethod has a pet Cat attribute.' Method BirdMethod has a pet Bird attribute.

Remarks

TheAttribute class associates predefined system information or user-defined custom information with a target element. A target element can be an assembly, class, constructor, delegate, enum, event, field, interface, method, portable executable file module, parameter, property, return value, struct, or another attribute.

Information provided by an attribute is also known as metadata. Metadata can be examined at run time by your application to control how your program processes data, or before run time by external tools to control how your application itself is processed or maintained. For example, .NET predefines and uses attribute types to control run-time behavior, and some programming languages use attribute types to represent language features not directly supported by the .NET common type system.

All attribute types derive directly or indirectly from theAttribute class. Attributes can be applied to any target element; multiple attributes can be applied to the same target element; and attributes can be inherited by an element derived from a target element. Use theAttributeTargets class to specify the target element to which the attribute is applied.

TheAttribute class provides convenient methods to retrieve and test custom attributes. For more information about using attributes, seeApplying Attributes andAttributes.

Constructors

Attribute()

Initializes a new instance of theAttribute class.

Properties

TypeId

When implemented in a derived class, gets a unique identifier for thisAttribute.

Methods

Equals(Object)

Returns a value that indicates whether this instance is equal to a specified object.

GetCustomAttribute(Assembly, Type, Boolean)

Retrieves a custom attribute applied to an assembly. Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttribute(Assembly, Type)

Retrieves a custom attribute applied to a specified assembly. Parameters specify the assembly and the type of the custom attribute to search for.

GetCustomAttribute(MemberInfo, Type, Boolean)

Retrieves a custom attribute applied to a member of a type. Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttribute(MemberInfo, Type)

Retrieves a custom attribute applied to a member of a type. Parameters specify the member, and the type of the custom attribute to search for.

GetCustomAttribute(Module, Type, Boolean)

Retrieves a custom attribute applied to a module. Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttribute(Module, Type)

Retrieves a custom attribute applied to a module. Parameters specify the module, and the type of the custom attribute to search for.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Retrieves a custom attribute applied to a method parameter. Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

GetCustomAttribute(ParameterInfo, Type)

Retrieves a custom attribute applied to a method parameter. Parameters specify the method parameter, and the type of the custom attribute to search for.

GetCustomAttributes(Assembly, Boolean)

Retrieves an array of the custom attributes applied to an assembly. Parameters specify the assembly, and an ignored search option.

GetCustomAttributes(Assembly, Type, Boolean)

Retrieves an array of the custom attributes applied to an assembly. Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttributes(Assembly, Type)

Retrieves an array of the custom attributes applied to an assembly. Parameters specify the assembly, and the type of the custom attribute to search for.

GetCustomAttributes(Assembly)

Retrieves an array of the custom attributes applied to an assembly. A parameter specifies the assembly.

GetCustomAttributes(MemberInfo, Boolean)

Retrieves an array of the custom attributes applied to a member of a type. Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttributes(MemberInfo, Type, Boolean)

Retrieves an array of the custom attributes applied to a member of a type. Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttributes(MemberInfo, Type)

Retrieves an array of the custom attributes applied to a member of a type. Parameters specify the member, and the type of the custom attribute to search for.

GetCustomAttributes(MemberInfo)

Retrieves an array of the custom attributes applied to a member of a type. A parameter specifies the member.

GetCustomAttributes(Module, Boolean)

Retrieves an array of the custom attributes applied to a module. Parameters specify the module, and an ignored search option.

GetCustomAttributes(Module, Type, Boolean)

Retrieves an array of the custom attributes applied to a module. Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttributes(Module, Type)

Retrieves an array of the custom attributes applied to a module. Parameters specify the module, and the type of the custom attribute to search for.

GetCustomAttributes(Module)

Retrieves an array of the custom attributes applied to a module. A parameter specifies the module.

GetCustomAttributes(ParameterInfo, Boolean)

Retrieves an array of the custom attributes applied to a method parameter. Parameters specify the method parameter, and whether to search ancestors of the method parameter.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Retrieves an array of the custom attributes applied to a method parameter. Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

GetCustomAttributes(ParameterInfo, Type)

Retrieves an array of the custom attributes applied to a method parameter. Parameters specify the method parameter, and the type of the custom attribute to search for.

GetCustomAttributes(ParameterInfo)

Retrieves an array of the custom attributes applied to a method parameter. A parameter specifies the method parameter.

GetHashCode()

Returns the hash code for this instance.

GetType()

Gets theType of the current instance.

(Inherited fromObject)
IsDefaultAttribute()

When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

IsDefined(Assembly, Type, Boolean)

Determines whether any custom attributes are applied to an assembly. Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

IsDefined(Assembly, Type)

Determines whether any custom attributes are applied to an assembly. Parameters specify the assembly, and the type of the custom attribute to search for.

IsDefined(MemberInfo, Type, Boolean)

Determines whether any custom attributes are applied to a member of a type. Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

IsDefined(MemberInfo, Type)

Determines whether any custom attributes are applied to a member of a type. Parameters specify the member, and the type of the custom attribute to search for.

IsDefined(Module, Type, Boolean)

Determines whether any custom attributes are applied to a module. Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

IsDefined(Module, Type)

Determines whether any custom attributes of a specified type are applied to a module. Parameters specify the module, and the type of the custom attribute to search for.

IsDefined(ParameterInfo, Type, Boolean)

Determines whether any custom attributes are applied to a method parameter. Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

IsDefined(ParameterInfo, Type)

Determines whether any custom attributes are applied to a method parameter. Parameters specify the method parameter, and the type of the custom attribute to search for.

Match(Object)

When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

MemberwiseClone()

Creates a shallow copy of the currentObject.

(Inherited fromObject)
ToString()

Returns a string that represents the current object.

(Inherited fromObject)

Explicit Interface Implementations

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Maps a set of names to a corresponding set of dispatch identifiers.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Retrieves the type information for an object, which can be used to get the type information for an interface.

_Attribute.GetTypeInfoCount(UInt32)

Retrieves the number of type information interfaces that an object provides (either 0 or 1).

_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Provides access to properties and methods exposed by an object.

Applies to

Thread Safety

This type is thread safe.

See also

Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, seeour contributor guide.

Feedback

Was this page helpful?

YesNo

In this article

Was this page helpful?

YesNo