ICorDebugClass2::GetParameterizedType, méthode
Obtient la déclaration de type pour cette classe.
HRESULT GetParameterizedType (
[in] CorElementType elementType,
[in] ULONG32 nTypeArgs,
[in, size_is(nTypeArgs)] ICorDebugType *ppTypeArgs[],
[out] ICorDebugType **ppType
);
Paramètres
elementType
[in] Valeur de l'énumération CorElementType qui spécifie le type d'élément pour cette classe : définit cette valeur à ELEMENT_TYPE_VALUETYPE si ICorDebugClass2 représente un type valeur. Définissez cette valeur à ELEMENT_TYPE_CLASS si ICorDebugClass2 représente un type complexe.nTypeArgs
[in] Nombre de paramètres de type, si le type est générique. Le nombre de paramètres de type (le cas échéant) doit correspondre au nombre requis par la classe.ppTypeArgs
[in] Tableau de pointeurs, pointant chacun vers un objet ICorDebugType qui représente un paramètre de type. Si la classe n'est pas générique, cette valeur est nulle.ppType
[out] Pointeur vers l'adresse d'un objet ICorDebugType qui représente la déclaration de type. Cet objet est équivalent à un objet Type en code managé.
Notes
Si la classe n'est pas générique, autrement dit, si elle n'a pas de paramètres de type, GetParameterizedType obtient simplement l'objet de type au moment de l'exécution qui correspond à la classe. Le paramètre elementType doit avoir le type d'élément correct pour la classe : ELEMENT_TYPE_VALUETYPE si la classe est un type valeur ; sinon ELEMENT_TYPE_CLASS.
Si la classe accepte les paramètres de type (par exemple, ArrayList<T>), vous pouvez utiliser GetParameterizedType afin de créer un objet de type pour un type instancié tel que ArrayList<int>.
Informations générales
Dans le .NET Framework versions 1.0 et 1.1, chaque type dans les métadonnées pourrait être mappé directement à un type dans le processus en cours. Un type de métadonnées et un type au moment de l'exécution avaient ainsi une représentation unique dans le processus en cours. Toutefois, un type générique dans les métadonnées peut être mappé à de nombreuses instanciations différentes du type dans le processus en cours. Par exemple, le type de métadonnées SortedList<K,V> peut être mappé à SortedList<String, EmployeeRecord>, SortedList<Int32, String>, SortedList<String,Int32>>, et ainsi de suite. Donc, vous avez besoin d'une méthode pour gérer l'instanciation de type.
Le .NET Framework version 2.0 introduit l'interface ICorDebugType. Pour un type générique, un objet ICorDebugClass ou ICorDebugClass2 représente le type non instancié (SortedList<K,V>), et un objet ICorDebugType représente les différents types instanciés. Avec un objet ICorDebugClass ou ICorDebugClass2, vous pouvez créer un objet ICorDebugType pour toute instanciation en appelant la méthode ICorDebugClass2::GetParameterizedType. Vous pouvez également créer un objet ICorDebugType pour un type simple, tel qu'Int32, ou pour un type non générique.
L'introduction de l'objet ICorDebugType pour représenter la notion au moment de l'exécution d'un type a des répercussions en chaîne dans toute l'API. Les fonctions qui prenaient précédemment un objet ICorDebugClass ou ICorDebugClass2 ou même une valeur CorElementType sont généralisées pour prendre un objet ICorDebugType.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : CorDebug.idl, CorDebug,h
Bibliothèque : CorGuids.lib
Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0