Partilhar via


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

Consulte também

Referência

Interface de ICorDebugClass2