Attribute Klasse

Definition

Stellt die Basisklasse für benutzerdefinierte Attribute dar.Represents the base class for custom attributes.

public ref class Attribute abstract : System::Runtime::InteropServices::_Attribute
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
type Attribute = class
    interface _Attribute
Public MustInherit Class Attribute
Implements _Attribute
Vererbung
Attribute
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird die Verwendung von Attribute veranschaulicht.The following code example demonstrates the usage of Attribute.

using namespace System;
using namespace System::Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum class Animal
{
    // Pets.
    Dog = 1,
    Cat, Bird
};

// A custom attribute to allow a target to have a pet.
public ref class AnimalTypeAttribute: public Attribute
{
public:

    // The constructor is called when the attribute is set.
    AnimalTypeAttribute( Animal pet )
    {
        thePet = pet;
    }


protected:

    // Keep a variable internally ...
    Animal thePet;

public:

    property Animal Pet 
    {
        // .. and show a copy to the outside world.
        Animal get()
        {
            return thePet;
        }

        void set( Animal value )
        {
            thePet = value;
        }
    }
};

// A test class where each method has its own pet.
ref class AnimalTypeTestClass
{
public:

    [AnimalType(Animal::Dog)]
    void DogMethod(){}


    [AnimalType(Animal::Cat)]
    void CatMethod(){}

    [AnimalType(Animal::Bird)]
    void BirdMethod(){}

};

int main()
{
    AnimalTypeTestClass^ testClass = gcnew AnimalTypeTestClass;
    Type^ type = testClass->GetType();

    // Iterate through all the methods of the class.
    System::Collections::IEnumerator^ myEnum = 
        type->GetMethods()->GetEnumerator();
    while ( myEnum->MoveNext() )
    {
        MethodInfo^ mInfo = safe_cast<MethodInfo^>(myEnum->Current);

        // Iterate through all the Attributes for each method.
        System::Collections::IEnumerator^ myEnum1 = 
            Attribute::GetCustomAttributes( mInfo )->GetEnumerator();
        while ( myEnum1->MoveNext() )
        {
            Attribute^ attr = safe_cast<Attribute^>(myEnum1->Current);

            // Check for the AnimalType attribute.
            if ( attr->GetType() == AnimalTypeAttribute::typeid )
                Console::WriteLine( "Method {0} has a pet {1} attribute.", 
                mInfo->Name, (dynamic_cast<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.
 */
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.
 */
Imports System.Reflection

Public 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 Sub
End Module

' Output:
' Method DogMethod has a pet Dog attribute.
' Method CatMethod has a pet Cat attribute.
' Method BirdMethod has a pet Bird attribute.

Hinweise

Die Attribute-Klasse ordnet vordefinierte Systeminformationen oder benutzerdefinierte benutzerdefinierte Informationen einem Target-Element zu.The Attribute class associates predefined system information or user-defined custom information with a target element. Ein Ziel Element kann eine Assembly, eine Klasse, ein Konstruktor, ein Delegat, eine Enumeration, ein Ereignis, ein Feld, eine Schnittstelle, eine Methode, ein portables ausführbares Datei Modul, ein Parameter, eine Eigenschaft, ein Rückgabewert, eine Struktur oder einA 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.

Informationen, die von einem Attribut bereitgestellt werden, werden auch als Metadaten bezeichnet.Information provided by an attribute is also known as metadata. Metadaten können von Ihrer Anwendung zur Laufzeit untersucht werden, um zu steuern, wie Daten von Ihrem Programm verarbeitet werden, oder vor der Laufzeit von externen Tools, um zu steuern, wie die Anwendung selbst verarbeitet oder gewartet wird.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. Beispielsweise wird die-.NET Framework prädefiniert und verwendet Attributtypen, um das Laufzeitverhalten zu steuern, und einige Programmiersprachen verwenden Attributtypen, um Sprachfunktionen darzustellen, die nicht direkt vom .NET Framework allgemeinen Typsystem unterstützt werden.For example, the .NET Framework 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 Framework common type system.

Alle Attributtypen werden direkt oder indirekt von der Attribute-Klasse abgeleitet.All attribute types derive directly or indirectly from the Attribute class. Attribute können auf ein beliebiges Ziel Element angewendet werden. mehrere Attribute können auf dasselbe Ziel Element angewendet werden. die Attribute und können von einem Element geerbt werden, das von einem Ziel Element abgeleitet ist.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. Verwenden Sie die AttributeTargets-Klasse, um das Ziel Element anzugeben, auf das das Attribut angewendet wird.Use the AttributeTargets class to specify the target element to which the attribute is applied.

Die Attribute-Klasse stellt praktische Methoden zum Abrufen und Testen von benutzerdefinierten Attributen bereit.The Attribute class provides convenient methods to retrieve and test custom attributes. Weitere Informationen zum Verwenden von Attributen finden Sie unter Anwenden von Attributen und Attributen.For more information about using attributes, see Applying Attributes and Attributes.

Konstruktoren

Attribute()

Initialisiert eine neue Instanz der Attribute-Klasse.Initializes a new instance of the Attribute class.

Eigenschaften

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

GetCustomAttribute(Assembly, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf eine angegebene Assembly angewendet wird.Retrieves a custom attribute applied to a specified assembly. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the assembly and the type of the custom attribute to search for.

GetCustomAttribute(Assembly, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf eine Assembly angewendet wird.Retrieves a custom attribute applied to an assembly. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttribute(MemberInfo, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf den Member eines Typs angewendet wird.Retrieves a custom attribute applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the member, and the type of the custom attribute to search for.

GetCustomAttribute(MemberInfo, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf den Member eines Typs angewendet wird.Retrieves a custom attribute applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Members gesucht werden sollen.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttribute(Module, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Modul angewendet wird.Retrieves a custom attribute applied to a module. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the module, and the type of the custom attribute to search for.

GetCustomAttribute(Module, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Modul angewendet wird.Retrieves a custom attribute applied to a module. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttribute(ParameterInfo, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf einen Methodenparameter angewendet wird.Retrieves a custom attribute applied to a method parameter. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the method parameter, and the type of the custom attribute to search for.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf einen Methodenparameter angewendet wird.Retrieves a custom attribute applied to a method parameter. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Methodenparameters gesucht werden sollen.Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

GetCustomAttributes(Assembly)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden.Retrieves an array of the custom attributes applied to an assembly. Ein Parameter gibt die Assembly an.A parameter specifies the assembly.

GetCustomAttributes(Assembly, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden.Retrieves an array of the custom attributes applied to an assembly. Parameter geben die Assembly und eine ignorierte Suchoption an.Parameters specify the assembly, and an ignored search option.

GetCustomAttributes(Assembly, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden.Retrieves an array of the custom attributes applied to an assembly. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the assembly, and the type of the custom attribute to search for.

GetCustomAttributes(Assembly, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden.Retrieves an array of the custom attributes applied to an assembly. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttributes(MemberInfo)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden.Retrieves an array of the custom attributes applied to a member of a type. Ein Parameter gibt den Member an.A parameter specifies the member.

GetCustomAttributes(MemberInfo, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden.Retrieves an array of the custom attributes applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Members gesucht werden sollen.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttributes(MemberInfo, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden.Retrieves an array of the custom attributes applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the member, and the type of the custom attribute to search for.

GetCustomAttributes(MemberInfo, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden.Retrieves an array of the custom attributes applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Members gesucht werden sollen.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

GetCustomAttributes(Module)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden.Retrieves an array of the custom attributes applied to a module. Ein Parameter gibt das Modul an.A parameter specifies the module.

GetCustomAttributes(Module, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden.Retrieves an array of the custom attributes applied to a module. Parameter geben das Modul und eine ignorierte Suchoption an.Parameters specify the module, and an ignored search option.

GetCustomAttributes(Module, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden.Retrieves an array of the custom attributes applied to a module. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the module, and the type of the custom attribute to search for.

GetCustomAttributes(Module, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden.Retrieves an array of the custom attributes applied to a module. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

GetCustomAttributes(ParameterInfo)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden.Retrieves an array of the custom attributes applied to a method parameter. Ein Parameter gibt den Methodenparameter an.A parameter specifies the method parameter.

GetCustomAttributes(ParameterInfo, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden.Retrieves an array of the custom attributes applied to a method parameter. Parameter geben den Methodenparameter an, und außerdem, ob frühere Versionen des Methodenparameters gesucht werden sollen.Parameters specify the method parameter, and whether to search ancestors of the method parameter.

GetCustomAttributes(ParameterInfo, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden.Retrieves an array of the custom attributes applied to a method parameter. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the method parameter, and the type of the custom attribute to search for.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden.Retrieves an array of the custom attributes applied to a method parameter. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Methodenparameters gesucht werden sollen.Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

IsDefined(Assembly, Type)

Bestimmt, ob benutzerdefinierte Attribute auf eine Assembly angewendet werden.Determines whether any custom attributes are applied to an assembly. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the assembly, and the type of the custom attribute to search for.

IsDefined(Assembly, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf eine Assembly angewendet werden.Determines whether any custom attributes are applied to an assembly. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.Parameters specify the assembly, the type of the custom attribute to search for, and an ignored search option.

IsDefined(MemberInfo, Type)

Bestimmt, ob benutzerdefinierte Attribute auf einen Member eines Typs angewendet werden.Determines whether any custom attributes are applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the member, and the type of the custom attribute to search for.

IsDefined(MemberInfo, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf einen Member eines Typs angewendet werden.Determines whether any custom attributes are applied to a member of a type. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Members gesucht werden sollen.Parameters specify the member, the type of the custom attribute to search for, and whether to search ancestors of the member.

IsDefined(Module, Type)

Ermittelt, ob benutzerdefinierte Attribute eines bestimmten Typs auf ein Modul angewendet werden.Determines whether any custom attributes of a specified type are applied to a module. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the module, and the type of the custom attribute to search for.

IsDefined(Module, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf ein Modul angewendet werden.Determines whether any custom attributes are applied to a module. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.Parameters specify the module, the type of the custom attribute to search for, and an ignored search option.

IsDefined(ParameterInfo, Type)

Bestimmt, ob benutzerdefinierte Attribute auf einen Methodenparameter angewendet werden.Determines whether any custom attributes are applied to a method parameter. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an.Parameters specify the method parameter, and the type of the custom attribute to search for.

IsDefined(ParameterInfo, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf einen Methodenparameter angewendet werden.Determines whether any custom attributes are applied to a method parameter. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an und außerdem, ob auch frühere Versionen des Methodenparameters gesucht werden sollen.Parameters specify the method parameter, the type of the custom attribute to search for, and whether to search ancestors of the method parameter.

Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.Retrieves the type information for an object, which can be used to get the type information for an interface.

_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).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)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.This type is thread safe.

Siehe auch