Attribute Klasse

Definition

Stellt die Basisklasse für benutzerdefinierte Attribute dar.

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)]
[System.Serializable]
public abstract class 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
[<System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)>]
[<System.Serializable>]
type Attribute = class
Public MustInherit Class Attribute
Public MustInherit Class Attribute
Implements _Attribute
Vererbung
Attribute
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird die Verwendung von Attribute veranschaulicht.

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.
 */
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.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 einem Zielelement vordefinierte Systeminformationen oder benutzerdefinierte Informationen zu. Ein Zielelement kann eine Assembly, klasse, konstruktor, delegate, enum, event, field, interface, method, portable executable file module, parameter, property, return value, struct oder ein anderes Attribut sein.

Von einem Attribut bereitgestellte Informationen werden auch als Metadaten bezeichnet. Metadaten können zur Laufzeit von Ihrer Anwendung untersucht werden, um zu steuern, wie Das Programm Daten verarbeitet, oder vor der Laufzeit durch externe Tools, um zu steuern, wie Ihre Anwendung selbst verarbeitet oder verwaltet wird. .NET ist beispielsweise vordefiniert und verwendet Attributtypen, um das Laufzeitverhalten zu steuern, und einige Programmiersprachen verwenden Attributtypen, um Sprachfeatures darstellen, die nicht direkt vom allgemeinen .NET-Typsystem unterstützt werden.

Alle Attributtypen werden direkt oder indirekt von der -Klasse Attribute ableiten. Attribute können auf jedes Zielelement angewendet werden. mehrere Attribute können auf dasselbe Zielelement angewendet werden. - und -Attribute können von einem Von einem Zielelement abgeleiteten Element geerbt werden. Verwenden Sie die AttributeTargets -Klasse, um das Zielelement anzugeben, auf das das Attribut angewendet wird.

Die Attribute -Klasse bietet praktische Methoden zum Abrufen und Testen benutzerdefinierter Attribute. Weitere Informationen zur Verwendung von Attributen finden Sie unter Anwenden von Attributen und Attributen.

Konstruktoren

Attribute()

Initialisiert eine neue Instanz der Attribute-Klasse.

Eigenschaften

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

GetCustomAttribute(Assembly, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf eine angegebene Assembly angewendet wird. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttribute(Assembly, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf eine Assembly angewendet wird. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.

GetCustomAttribute(MemberInfo, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf den Member eines Typs angewendet wird. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttribute(MemberInfo, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf den Member eines Typs angewendet wird. 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.

GetCustomAttribute(Module, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Modul angewendet wird. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttribute(Module, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Modul angewendet wird. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.

GetCustomAttribute(ParameterInfo, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf einen Methodenparameter angewendet wird. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf einen Methodenparameter angewendet wird. 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.

GetCustomAttributes(Assembly)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden. Ein Parameter gibt die Assembly an.

GetCustomAttributes(Assembly, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden. Parameter geben die Assembly und eine ignorierte Suchoption an.

GetCustomAttributes(Assembly, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttributes(Assembly, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.

GetCustomAttributes(MemberInfo)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden. Ein Parameter gibt den Member an.

GetCustomAttributes(MemberInfo, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden. 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.

GetCustomAttributes(MemberInfo, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttributes(MemberInfo, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf den Member eines Typs angewendet werden. 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.

GetCustomAttributes(Module)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden. Ein Parameter gibt das Modul an.

GetCustomAttributes(Module, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden. Parameter geben das Modul und eine ignorierte Suchoption an.

GetCustomAttributes(Module, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttributes(Module, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.

GetCustomAttributes(ParameterInfo)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden. Ein Parameter gibt den Methodenparameter an.

GetCustomAttributes(ParameterInfo, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter an, und außerdem, ob frühere Versionen des Methodenparameters gesucht werden sollen.

GetCustomAttributes(ParameterInfo, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden. 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.

GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

GetType()

Ruft den Type der aktuellen Instanz ab.

(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.

IsDefined(Assembly, Type)

Bestimmt, ob benutzerdefinierte Attribute auf eine Assembly angewendet werden. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs an.

IsDefined(Assembly, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf eine Assembly angewendet werden. Parameter geben die Assembly und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.

IsDefined(MemberInfo, Type)

Bestimmt, ob benutzerdefinierte Attribute auf einen Member eines Typs angewendet werden. Parameter geben den Member und den Typ des zu suchenden benutzerdefinierten Attributs an.

IsDefined(MemberInfo, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf einen Member eines Typs angewendet werden. 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.

IsDefined(Module, Type)

Ermittelt, ob benutzerdefinierte Attribute eines bestimmten Typs auf ein Modul angewendet werden. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs an.

IsDefined(Module, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf ein Modul angewendet werden. Parameter geben das Modul und den Typ des zu suchenden benutzerdefinierten Attributs und eine ignorierte Suchoption an.

IsDefined(ParameterInfo, Type)

Bestimmt, ob benutzerdefinierte Attribute auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter und den Typ des zu suchenden benutzerdefinierten Attributs an.

IsDefined(ParameterInfo, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf einen Methodenparameter angewendet werden. 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.

Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

_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.

_Attribute.GetTypeInfoCount(UInt32)

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

Gilt für

Threadsicherheit

Dieser Typ ist threadsicher.

Siehe auch