Metodo ICorDebugClass2::GetParameterizedType
Ottiene la dichiarazione di tipo per questa classe.
HRESULT GetParameterizedType (
[in] CorElementType elementType,
[in] ULONG32 nTypeArgs,
[in, size_is(nTypeArgs)] ICorDebugType *ppTypeArgs[],
[out] ICorDebugType **ppType
);
Parametri
elementType
[in] Valore dell'enumerazione CorElementType che specifica il tipo di elemento per questa classe. Impostare questo valore su ELEMENT_TYPE_VALUETYPE se questo oggetto ICorDebugClass2 rappresenta un tipo valore. Impostare questo valore su ELEMENT_TYPE_CLASS se questo oggetto ICorDebugClass2 rappresenta un tipo complesso.nTypeArgs
[in] Numero dei parametri di tipo, se il tipo è generico. Il numero dei parametri di tipo (se presenti) deve corrispondere al numero richiesto dalla classe.ppTypeArgs
[in] Matrice di puntatori, ognuno dei quali punta a un oggetto ICorDebugType che rappresenta un parametro di tipo. Se la classe non è generica, questo valore è null.ppType
[out] Puntatore all'indirizzo di un oggetto ICorDebugType che rappresenta la dichiarazione di tipo. Questo oggetto è equivalente a un oggetto Type nel codice gestito.
Note
Se la classe non è generica, vale a dire se non ha parametri di tipo, GetParameterizedType otterrà semplicemente l'oggetto di tipo in fase di esecuzione corrispondente alla classe. Il parametro elementType deve essere impostato sul tipo di elemento appropriato per la classe, vale a dire ELEMENT_TYPE_VALUETYPE se la classe è un tipo valore, altrimenti ELEMENT_TYPE_CLASS.
Se la classe accetta parametri di tipo, ad esempio ArrayList<T>, sarà possibile utilizzare GetParameterizedType per creare un oggetto tipo per un tipo di cui è stata creata un'istanza quale ArrayList<int>.
Informazioni di base
In .NET Framework versioni 1.0 e 1.1, è possibile eseguire il mapping di ciascun tipo nei metadati direttamente a un tipo nel processo in esecuzione. In questo modo, un tipo di metadati ed un tipo in fase di esecuzione avrebbero un'unica rappresentazione nel processo in esecuzione. Tuttavia è possibile eseguire il mapping di un tipo generico nei metadati a più istanze create del tipo nel processo in esecuzione. Ad esempio, il tipo nei metadati SortedList<K,V> può essere associato a SortedList<String, EmployeeRecord>, SortedList<Int32, String>, SortedList<String,Int32>> e così via. Sarà pertanto necessario un modo per gestire la creazione di istanze del tipo.
In .NET Framework versione 2.0 viene introdotta l'interfaccia ICorDebugType. Per un tipo generico, un oggetto ICorDebugClass o ICorDebugClass2 rappresenta il tipo privo di istanze (SortedList<K,V>), mentre un oggetto ICorDebugType rappresenta i diversi tipi con istanze. Dato un oggetto ICorDebugClass o ICorDebugClass2, è possibile creare un oggetto ICorDebugType per ogni istanza creata, chiamando il metodo ICorDebugClass2::GetParameterizedType. È possibile inoltre creare un oggetto ICorDebugType per un tipo semplice, ad esempio Int32, o per un tipo non generico.
L'introduzione dell'oggetto ICorDebugType per rappresentare la nozione di runtime di un tipo ha effetti che si ripercuotono su tutta l'API. Funzioni che in precedenza accettavano un oggetto ICorDebugClass o ICorDebugClass2 o anche un valore CorElementType vengono generalizzate al fine di accettare un oggetto ICorDebugType.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorDebug.idl, CorDebug.h
Libreria: CorGuids.lib
Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0