Compartilhar via


Método ICorDebugClass2::GetParameterizedType

Obtém a declaração do 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: conjunto Este valor para ELEMENT_TYPE_VALUETYPE se este ICorDebugClass2 representa um tipo de valor. conjunto Esse valor de 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 corresponder ao número necessário para a classe.

  • ppTypeArgs
    [in] Uma matriz de ponteiros, cada um apontando para um ICorDebugType objeto representando 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 a declaração do tipo. Este objeto é equivalente a um Type objeto no código gerenciado.

Comentários

Se a classe for não-genéricas, isto é, caso ela tenha nenhum parâmetro de tipo, GetParameterizedType simplesmente obtém o objeto de tipo em tempo de execução correspondente à classe. The elementType parâmetro deve ser definido para o tipo de elemento correto para a classe: ELEMENT_TYPE_VALUETYPE se a classe for 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, sistema autônomo ArrayList<int>.

Informações de plano de fundo

Nas versões do .NET estrutura 1.0 e 1.1, todos os tipos nos metadados podem ser mapeado diretamente para um tipo de processo em execução. Assim, um tipo de metadados e um tipo de tempo de execução tinham uma representação única no processo em execução. Entretanto, um tipo genérico em metadados pode ser mapeado para várias instanciações diferentes do tipo no processo em execução. Por exemplo, os metadados digite SortedList<K,V> pode mapear para SortedList<String, EmployeeRecord>, SortedList<Int32, String>, SortedList<String,Array<Int32>>, e assim por diante. Portanto, você precisa de uma forma de manipular a instanciação do tipo.

O .NET estrutura 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 os vários tipos de instâncias. Dado um ICorDebugClass ou ICorDebugClass2 o objeto, você pode criar um ICorDebugType objeto para a instanciação, chamando o ICorDebugClass2::GetParameterizedType método. Você também pode criar um ICorDebugType objeto para um tipo simples, sistema autônomo Int32, ou para um tipo não genérico.

A introdução do ICorDebugType objeto para representar a noção de time de execução de um tipo tem um efeito dominó em toda a API. Funções que antes levava uma ICorDebugClass ou ICorDebugClass2 objeto ou até mesmo um CorElementType valor são generalizada para tirar um ICorDebugType objeto.

Requisitos

Plataformas: See Requisitos de sistema do .NET framework.

Cabeçalho: CorDebug.idl

Biblioteca: CorGuids.lib

.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface ICorDebugClass2