TypeBuilder.MakeGenericType(Type[]) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Podstawia elementy tablicy typów dla parametrów typu bieżącej definicji typu ogólnego i zwraca wynikowy skonstruowany typ.
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
Parametry
- typeArguments
- Type[]
Tablica typów, które mają zostać zastąpione parametrami typu bieżącej definicji typu ogólnego.
Zwraca
Reprezentujący Type skonstruowany typ utworzony przez podstawianie elementów typeArguments
dla parametrów typu bieżącego typu ogólnego.
Wyjątki
Bieżący typ nie reprezentuje definicji typu ogólnego. Oznacza to, IsGenericTypeDefinition że zwraca wartość false
.
Właściwość Module dowolnego elementu typeArguments
to null
.
-lub-
Właściwość Assembly modułu dowolnego elementu typeArguments
to null
.
Uwagi
Użyj tej metody, gdy emitowany kod wymaga typu skonstruowanego z bieżącej definicji typu ogólnego. Nie jest konieczne wywołanie CreateType metody przed wywołaniem MakeGenericType metody w obiekcie TypeBuilder , która reprezentuje definicję typu ogólnego. Jeśli bieżący TypeBuilder element nie reprezentuje definicji typu ogólnego, InvalidOperationException jest zgłaszany element .
Obiekt zwracany przez tę metodę działa jako symbol zastępczy skonstruowanego typu ogólnego w emitowanego kodzie. Jest to wystąpienie klasy pochodnej Type , które ma ograniczone możliwości. W szczególności:
Aby uzyskać metody, pola i konstruktory dla tych skonstruowanych typów ogólnych, użyj GetMethod(Type, MethodInfo)przeciążeń metod , GetField(Type, FieldInfo)i GetConstructor(Type, ConstructorInfo) .
Dwa wystąpienia reprezentujące ten sam skonstruowany typ nie są porównywane jako równe. Na przykład w poniższym kodzie
t1.Equals(t2)
zwraca wartośćfalse
:
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)