TypeBuilder.MakeGenericType(Type[]) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nahradí prvky pole typů parametry typu aktuální definice obecného typu a vrátí výsledný vytvořený 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[]
Pole typů, které mají být nahrazeny parametry typu aktuální definice obecného typu.
Návraty
A Type představující konstruovaný typ vytvořený nahrazením prvků z typeArguments
parametry typu aktuálního obecného typu.
Výjimky
Aktuální typ nepředstavuje definici obecného typu. To znamená, IsGenericTypeDefinition že vrátí false
hodnotu .
Vlastnost Module libovolného prvku je typeArguments
null
.
-nebo-
Vlastnost Assembly modulu libovolného prvku je typeArguments
null
.
Poznámky
Tuto metodu použijte, pokud váš vygenerovaný kód vyžaduje typ vytvořený z aktuální definice obecného typu. Není nutné volat metodu CreateType před voláním MakeGenericType metody na objektu TypeBuilder , který představuje definici obecného typu. Pokud aktuální TypeBuilder nepředstavuje definici obecného typu, InvalidOperationException je vyvolán .
Objekt vrácený touto metodou funguje jako zástupný symbol pro vytvořený obecný typ ve vašem generovaném kódu. Jedná se o instanci třídy odvozené z Type třídy, která má omezené možnosti. Zejména jde o toto:
K získání metod, polí a konstruktorů pro tyto konstruované obecné typy použijte GetMethod(Type, MethodInfo)přetížení metody , GetField(Type, FieldInfo)a GetConstructor(Type, ConstructorInfo) .
Dvě instance, které představují stejný konstruovaný typ, se nerovnají jako rovny. Například v následujícím kódu
t1.Equals(t2)
vrátí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)