Udostępnij za pośrednictwem


TypeBuilder.MakeGenericType(Type[]) Metoda

Definicja

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.

typeArguments to null.

-lub-

Każdy element elementu typeArguments to null.

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:

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)

Dotyczy