TypeBuilder.MakeGenericType(Type[]) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ersetzt die Typparameter der aktuellen generischen Typdefinition durch die Elemente eines Arrays von Typen und gibt den resultierenden konstruierten Typ zurück.
public:
override Type ^ MakeGenericType(... cli::array <Type ^> ^ typeArguments);
public override Type MakeGenericType (params Type[] typeArguments);
override this.MakeGenericType : Type[] -> Type
Public Overrides Function MakeGenericType (ParamArray typeArguments As Type()) As Type
Parameter
- typeArguments
- Type[]
Ein Array von Typen, die die Typparameter der aktuellen generischen Typdefinition ersetzen sollen.
Gibt zurück
Ein Type, der den konstruierten Typ darstellt, der durch Ersetzen der Typparameter des aktuellen generischen Typs durch die Elemente von typeArguments
erstellt wurde.
Ausnahmen
Der aktuelle Typ stellt keine Definition eines generischen Typs dar. Das heißt, IsGenericTypeDefinition gibt false
zurück.
typeArguments
ist null
.
- oder -
Eines der Elemente von typeArguments
ist null
.
Die Module-Eigenschaft eines beliebigen Elements von typeArguments
ist null
.
- oder -
Die Assembly-Eigenschaft des Moduls eines beliebigen Elements von typeArguments
ist null
.
Hinweise
Verwenden Sie diese Methode, wenn der ausgegebene Code einen Typ erfordert, der aus der aktuellen generischen Typdefinition erstellt wird. Es ist nicht erforderlich, die -Methode aufzurufen, CreateType bevor die -Methode für einen aufgerufen wird, der MakeGenericType eine generische TypeBuilder Typdefinition darstellt. Wenn die aktuelle TypeBuilder nicht die Definition eines generischen Typs darstellt, InvalidOperationException wird eine ausgelöst.
Das von dieser Methode zurückgegebene Objekt fungiert als Platzhalter für einen konstruierten generischen Typ im ausgegebenen Code. Es handelt sich um eine Instanz einer von abgeleiteten Type Klasse, die über eingeschränkte Funktionen verfügt. Dies gilt insbesondere für:
Verwenden Sie zum Abrufen von Methoden, Feldern und Konstruktoren für diese konstruierten generischen Typen die GetMethod(Type, MethodInfo) GetField(Type, FieldInfo) Methodenüberladungen , und GetConstructor(Type, ConstructorInfo) .
Zwei Instanzen, die den gleichen konstruierten Typ darstellen, werden nicht als gleich verglichen. Im folgenden Code wird beispielsweise
t1.Equals(t2)
false
zurückgegeben:
Type^ t1 = tbldr->MakeGenericType(String::typeid);
Type^ t2 = tbldr->MakeGenericType(String::typeid);
bool result = t1->Equals(t2);
Type t1 = tbldr.MakeGenericType(typeof(string));
Type t2 = tbldr.MakeGenericType(typeof(string));
bool result = t1.Equals(t2);
Dim t1 As Type = tbldr.MakeGenericType(GetType(String))
Dim t2 As Type = tbldr.MakeGenericType(GetType(String))
Dim result As Boolean = t1.Equals(t2)