Auf Englisch lesen

Freigeben über


Attribute Klasse

Definition

Stellt die Basisklasse für benutzerdefinierte Attribute dar.

C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
public abstract class Attribute
C#
[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
C#
[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
Vererbung
Attribute
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird die Verwendung von Attributeveranschaulicht.

C#
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.
 */

Hinweise

Die Attribute Klasse ordnet vordefinierte Systeminformationen oder benutzerdefinierte Informationen einem Zielelement zu. Ein Zielelement kann eine Assembly, Klasse, Konstruktor, Delegate, Enumeration, Ereignis, Feld, Schnittstelle, Methode, portable ausführbare Dateimodul, Parameter, Eigenschaft, Rückgabewert, Struktur oder ein anderes Attribut sein.

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

Alle Attributtypen werden direkt oder indirekt von der Attribute Klasse abgeleitet. Attribute können auf jedes Zielelement angewendet werden; Mehrere Attribute können auf dasselbe Zielelement angewendet werden. und Attribute können von einem Element geerbt werden, das von einem Zielelement abgeleitet wurde. 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 von benutzerdefinierten Attributen. Weitere Informationen zur Verwendung von Attributen finden Sie unter Anwenden von Attributen und Attribute.

Konstruktoren

Attribute()

Initialisiert eine neue Instanz der Attribute Klasse.

Eigenschaften

TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

Methoden

Equals(Object)

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

GetCustomAttribute(Assembly, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf eine Assembly angewendet wird. Parameter geben die Assembly, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und eine ignorierte Suchoption.

GetCustomAttribute(Assembly, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf eine angegebene Assembly angewendet wird. Parameter geben die Assembly und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttribute(MemberInfo, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Element eines Typs angewendet wird. Parameter geben das Element, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Elements durchsucht werden sollen.

GetCustomAttribute(MemberInfo, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Element eines Typs angewendet wird. Parameter geben das Element und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttribute(Module, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Modul angewendet wird. Parameter geben das Modul, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und eine ignorierte Suchoption.

GetCustomAttribute(Module, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf ein Modul angewendet wird. Parameter geben das Modul und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttribute(ParameterInfo, Type, Boolean)

Ruft ein benutzerdefiniertes Attribut ab, das auf einen Methodenparameter angewendet wird. Parameter geben den Methodenparameter, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Methodenparameters durchsucht werden sollen.

GetCustomAttribute(ParameterInfo, Type)

Ruft ein benutzerdefiniertes Attribut ab, das auf einen Methodenparameter angewendet wird. Parameter geben den Methodenparameter und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

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, Boolean)

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

GetCustomAttributes(Assembly, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf eine Assembly angewendet werden. Parameter geben die Assembly und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttributes(Assembly)

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

GetCustomAttributes(MemberInfo, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Element eines Typs angewendet werden. Parameter geben das Element, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Elements durchsucht werden sollen.

GetCustomAttributes(MemberInfo, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Element eines Typs angewendet werden. Parameter geben das Element, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Elements durchsucht werden sollen.

GetCustomAttributes(MemberInfo, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Element eines Typs angewendet werden. Parameter geben das Element und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttributes(MemberInfo)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Element eines Typs angewendet werden. Ein Parameter gibt das Element 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, Boolean)

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

GetCustomAttributes(Module, Type)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf ein Modul angewendet werden. Parameter geben das Modul und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttributes(Module)

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

GetCustomAttributes(ParameterInfo, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter an und geben an, ob Vorgänger des Methodenparameters durchsucht werden sollen.

GetCustomAttributes(ParameterInfo, Type, Boolean)

Ruft ein Array der benutzerdefinierten Attribute ab, die auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Methodenparameters durchsucht 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 benutzerdefinierten Attributs an, nach dem gesucht werden soll.

GetCustomAttributes(ParameterInfo)

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

GetHashCode()

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

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

IsDefined(Assembly, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf eine Assembly angewendet werden. Parameter geben die Assembly, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und eine ignorierte Suchoption.

IsDefined(Assembly, Type)

Bestimmt, ob benutzerdefinierte Attribute auf eine Assembly angewendet werden. Parameter geben die Assembly und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

IsDefined(MemberInfo, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf ein Element eines Typs angewendet werden. Parameter geben das Element, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Elements durchsucht werden sollen.

IsDefined(MemberInfo, Type)

Bestimmt, ob benutzerdefinierte Attribute auf ein Element eines Typs angewendet werden. Parameter geben das Element und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

IsDefined(Module, Type, Boolean)

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

IsDefined(Module, Type)

Bestimmt, ob benutzerdefinierte Attribute eines angegebenen Typs auf ein Modul angewendet werden. Parameter geben das Modul und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

IsDefined(ParameterInfo, Type, Boolean)

Bestimmt, ob benutzerdefinierte Attribute auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter, den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll, und ob Vorgänger des Methodenparameters durchsucht werden sollen.

IsDefined(ParameterInfo, Type)

Bestimmt, ob benutzerdefinierte Attribute auf einen Methodenparameter angewendet werden. Parameter geben den Methodenparameter und den Typ des benutzerdefinierten Attributs an, nach dem gesucht werden soll.

Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

MemberwiseClone()

Erstellt eine flache Kopie der 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 einen Satz von Namen einem entsprechenden Satz von Verteiler-IDs zu.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können.

_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Typinformationsschnittstellen ab, die ein Objekt bereitstellt (entweder 0 oder 1).

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

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Threadsicherheit

Dieser Typ ist threadsicher.

Weitere Informationen