TypeBuilder.MakeGenericType(Type[]) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Sostituisce gli elementi di una matrice di tipi ai parametri di tipo della definizione di tipo generico corrente e restituisce il tipo costruito risultante.
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
Parametri
- typeArguments
- Type[]
Matrice di tipi con cui sostituire i parametri di tipo della definizione di tipo generico corrente.
Restituisce
Oggetto Type che rappresenta il tipo costruito ottenuto sostituendo i parametri di tipo del tipo generico corrente con gli elementi di typeArguments
.
Eccezioni
Il tipo corrente non rappresenta la definizione di un tipo generico. Ciò significa che IsGenericTypeDefinition restituisce false
.
La proprietà Module di qualsiasi elemento di typeArguments
è null
.
-oppure-
La proprietà Assembly del modulo di qualsiasi elemento di typeArguments
è null
.
Commenti
Usare questo metodo quando il codice generato richiede un tipo costruito dalla definizione di tipo generico corrente. Non è necessario chiamare il CreateType metodo prima di chiamare il MakeGenericType metodo su un TypeBuilder oggetto che rappresenta una definizione di tipo generico. Se l'oggetto corrente TypeBuilder non rappresenta la definizione di un tipo generico, viene generata un'eccezione InvalidOperationException .
L'oggetto restituito da questo metodo funge da segnaposto per un tipo generico costruito nel codice generato. Si tratta di un'istanza di una classe derivata da Type che ha funzionalità limitate. In particolare:
Per ottenere metodi, campi e costruttori per questi tipi generici costruiti, usare gli overload del GetMethod(Type, MethodInfo)metodo , GetField(Type, FieldInfo)e GetConstructor(Type, ConstructorInfo) .
Due istanze che rappresentano lo stesso tipo costruito non vengono confrontate come uguali. Ad esempio, nel codice
t1.Equals(t2)
seguente restituiscefalse
:
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)