TypeBuilder.MakeGenericType(Type[]) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Substitui os elementos de uma matriz de tipos pelos parâmetros de tipo da definição de tipo genérico atual e retorna o tipo construído 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[]
Uma matriz de tipos a serem substituídos pelos parâmetros da definição de tipo genérico atual.
Retornos
Um Type representando o tipo construído formado substituindo os elementos do typeArguments
pelos parâmetros de tipo do tipo genérico atual.
Exceções
O tipo atual não representa a definição de um tipo genérico. Ou seja, IsGenericTypeDefinition retorna false
.
A propriedade Module de qualquer elemento de typeArguments
é null
.
- ou -
A propriedade Assembly do módulo de qualquer elemento de typeArguments
é null
.
Comentários
Use esse método quando o código emitido exigir um tipo construído a partir da definição de tipo genérico atual. Não é necessário chamar o CreateType método antes de chamar o MakeGenericType método em um TypeBuilder que representa uma definição de tipo genérico. Se o atual TypeBuilder não representar a definição de um tipo genérico, um InvalidOperationException será gerado.
O objeto retornado por esse método funciona como um espaço reservado para um tipo genérico construído em seu código emitido. É uma instância de uma classe derivada de Type que tem recursos limitados. Especialmente:
Para obter métodos, campos e construtores para esses tipos genéricos construídos, use as sobrecargas de GetMethod(Type, MethodInfo)método , GetField(Type, FieldInfo)e GetConstructor(Type, ConstructorInfo) .
Duas instâncias que representam o mesmo tipo construído não são comparadas como iguais. Por exemplo, no código
t1.Equals(t2)
a seguir retornafalse
:
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)