Método de ICorDebugClass2::GetParameterizedType
Obtém a declaração de tipo para esta classe.
HRESULT GetParameterizedType (
[in] CorElementType elementType,
[in] ULONG32 nTypeArgs,
[in, size_is(nTypeArgs)] ICorDebugType *ppTypeArgs[],
[out] ICorDebugType **ppType
);
Parâmetros
elementType
[in] Um valor igual a CorElementType enumeração que especifica o tipo de elemento para esta classe: Defina esse valor como ELEMENT_TYPE_VALUETYPE, se este ICorDebugClass2 representa um tipo de valor. Defina esse valor como ELEMENT_TYPE_CLASS, se este ICorDebugClass2 representa um tipo complexo.nTypeArgs
[in] O número de parâmetros de tipo, se o tipo é genérico. O número de parâmetros de tipo (se houver) deve coincidir com o número necessário pela classe.ppTypeArgs
[in] Uma matriz de ponteiros, cada qual aponta para um ICorDebugType o objeto que representa um parâmetro de tipo. Se a classe não genéricas, esse valor é nulo.ppType
[out] Um ponteiro para o endereço de um ICorDebugType objeto que representa o tipo de declaração. Este objeto é equivalente a uma Type o objeto no código gerenciado.
Comentários
Se a classe é não-genéricas, ou seja, se ela tem nenhum parâmetro de tipo, GetParameterizedType simplesmente obtém o objeto de tipo de tempo de execução correspondente a classe. O elementType parâmetro deve ser definido para o tipo de elemento correta para a classe: ELEMENT_TYPE_VALUETYPE se a classe é um tipo de valor; Caso contrário, ELEMENT_TYPE_CLASS.
Se a classe aceita parâmetros de tipo (por exemplo, ArrayList<T>), você pode usar GetParameterizedType para construir um objeto de tipo para um tipo instanciado como ArrayList<int>.
Informações de plano de fundo
No.NET Framework versões 1.0 e 1.1, todos os tipos de metadados podem ser mapeadas diretamente para um tipo de processo em execução. Assim, um tipo de metadados e um tipo de tempo de execução tinham uma única representação o processo em execução. Entretanto, um tipo genérico em metadados pode ser mapeado para várias instanciações de diferentes do tipo do processo em execução. Por exemplo, o tipo de metadados SortedList<K,V> pode mapear para SortedList<String, EmployeeRecord>, SortedList<Int32, String>, SortedList<String,Int32>>e assim por diante. Portanto, você precisa de uma maneira de lidar com a instanciação do tipo.
A.NET Framework versão 2.0 introduz o ICorDebugType interface. Para um tipo genérico, um ICorDebugClass ou ICorDebugClass2 objeto representa o tipo sem instância (SortedList<K,V>) e um ICorDebugType objeto representa a vários tipos de instanciado. Dado um ICorDebugClass ou ICorDebugClass2 o objeto, você pode criar um ICorDebugType o objeto para qualquer instanciação chamando o ICorDebugClass2::GetParameterizedType método. Você também pode criar um ICorDebugType o objeto para um tipo simples, como Int32, ou para um tipo não genérico.
A introdução do ICorDebugType o objeto para representar a noção de tempo de execução de um tipo tem um efeito de ondulação em toda a API. Funções que levaram uma ICorDebugClass ou ICorDebugClass2 de objeto ou até mesmo um CorElementType valor são generalizada para tirar uma ICorDebugType objeto.
Requisitos
Plataformas: Consulte Requisitos de sistema do .NET Framework.
Cabeçalho: CorDebug.idl, CorDebug.h
Biblioteca: CorGuids.lib
.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0