TypeBuilder.MakeGenericType(Type[]) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sustituye los elementos de una matriz de tipos por los parámetros de tipo de la definición de tipo genérico actual y devuelve el tipo construido resultante.
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
Parámetros
- typeArguments
- Type[]
Matriz de tipos que se va a sustituir por los parámetros de la definición del tipo genérico actual.
Devoluciones
Objeto Type que representa el tipo construido formado al sustituir los elementos de typeArguments
por los parámetros del tipo genérico actual.
Excepciones
El tipo actual no representa la definición de un tipo genérico. Es decir, IsGenericTypeDefinition devuelve false
.
La propiedad Module de cualquier elemento de typeArguments
es null
.
o bien
La propiedad Assembly del módulo de cualquier elemento de typeArguments
es null
.
Comentarios
Use este método cuando el código emitido requiera un tipo construido a partir de la definición de tipo genérico actual. No es necesario llamar al CreateType método antes de llamar al MakeGenericType método en un TypeBuilder que representa una definición de tipo genérico. Si el objeto actual TypeBuilder no representa la definición de un tipo genérico, se produce una InvalidOperationException excepción .
El objeto devuelto por este método funciona como marcador de posición para un tipo genérico construido en el código emitido. Es una instancia de una clase derivada de Type que tiene funcionalidades limitadas. En concreto:
Para obtener métodos, campos y constructores para estos tipos genéricos construidos, use las sobrecargas del GetMethod(Type, MethodInfo)método , GetField(Type, FieldInfo)y GetConstructor(Type, ConstructorInfo) .
Dos instancias que representan el mismo tipo construido no se comparan como iguales. Por ejemplo, en el código
t1.Equals(t2)
siguiente se devuelvefalse
:
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)