Generische Typen und Attribute (C#-Programmierhandbuch)Generics and Attributes (C# Programming Guide)

Das Anwenden von Attributen auf generische Typen erfolgt in derselben Weise wie auf nicht generische Typen.Attributes can be applied to generic types in the same way as non-generic types. Weitere Informationen zum Anwenden von Attributen finden Sie unter Attribute.For more information on applying attributes, see Attributes.

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.Custom attributes are only permitted to reference open generic types, which are generic types for which no type arguments are supplied, and closed constructed generic types, which supply arguments for all type parameters.

In den folgenden Beispielen wird dieses benutzerdefinierte Attribut verwendet:The following examples use this custom attribute:

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

Ein Attribut kann auf einen offenen generischen Typ verweisen:An attribute can reference an open generic type:

public class GenericClass1<T> { }

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

Geben Sie mehrere Typparameter mit der entsprechenden Anzahl von Kommas an.Specify multiple type parameters using the appropriate number of commas. In diesem Beispiel verfügt GenericClass2 über zwei Typparameter:In this example, GenericClass2 has two type parameters:

public class GenericClass2<T, U> { }

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

Ein Attribut kann auf einen geschlossenen, konstruierten generischen Typ verweisen:An attribute can reference a closed constructed generic type:

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:An attribute that references a generic type parameter will cause a compile-time error:

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

Ein generischer Typ kann nicht von Attribute erben:A generic type cannot inherit from Attribute:

//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.To obtain information about a generic type or type parameter at run time, you can use the methods of System.Reflection. Weitere Informationen finden Sie unter Generische Typen und Reflektion.For more information, see Generics and Reflection

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
GenerikaGenerics
AttributeAttributes