Generische Typen und Attribute (C#-Programmierhandbuch)

Das Anwenden von Attributen auf generische Typen erfolgt in derselben Weise wie auf nicht generische Typen. Weitere Informationen zum Anwenden von Attributen finden Sie unter Attribute.

Benutzerdefinierte Attribute dürfen nur auf offene generische Typen (generische Typen, für die keine Typargumente bereitgestellt werden) und auf geschlossene konstruierte generische Typen (generische Typen, die Argumente für alle Typparameter bereitstellen) verweisen.

In den folgenden Beispielen wird dieses benutzerdefinierte Attribut verwendet:

class CustomAttribute : System.Attribute
{
    public System.Object info;
}

Ein Attribut kann auf einen offenen generischen Typ verweisen:

public class GenericClass1<T> { }

[CustomAttribute(info = typeof(GenericClass1<>))]
class ClassA { }

Geben Sie mehrere Typparameter mit der entsprechenden Anzahl von Kommas an. In diesem Beispiel verfügt GenericClass2 über zwei Typparameter:

public class GenericClass2<T, U> { }

[CustomAttribute(info = typeof(GenericClass2<,>))]
class ClassB { }

Ein Attribut kann auf einen geschlossenen, konstruierten generischen Typ verweisen:

public class GenericClass3<T, U, V> { }

[CustomAttribute(info = typeof(GenericClass3<int, double, string>))]
class ClassC { }

Ein Attribut, das auf einen generischen Typparameter verweist, verursacht einen Kompilierungsfehler:

//[CustomAttribute(info = typeof(GenericClass3<int, T, string>))]  //Error
class ClassD<T> { }

Ein generischer Typ kann nicht von Attribute erben:

//public class CustomAtt<T> : System.Attribute {}  //Error

Um zur Laufzeit Informationen zu einem generischen Typ oder Typparameter abzurufen, können Sie die Methoden von System.Reflection verwenden. Weitere Informationen finden Sie unter Generische Typen und Reflektion

Siehe auch

C#-Programmierhandbuch
Generika
Attribute