Freigeben über


ICorDebugClass2::GetParameterizedType-Methode

Aktualisiert: November 2007

Ruft die Typdeklaration für diese Klasse ab.

HRESULT GetParameterizedType (
    [in] CorElementType                      elementType,
    [in] ULONG32                             nTypeArgs,
    [in, size_is(nTypeArgs)] ICorDebugType  *ppTypeArgs[],
    [out] ICorDebugType                    **ppType
);

Parameter

  • elementType
    [in] Ein Wert der CorElementType-Enumeration, der den Elementtyp dieser Klasse angibt: Legt diesen Wert auf ELEMENT_TYPE_VALUETYPE fest, wenn diese ICorDebugClass2 einen Werttyp darstellt. Legen Sie diesen Wert auf ELEMENT_TYPE_CLASS fest, wenn diese ICorDebugClass2 einen komplexen Typ darstellt.

  • nTypeArgs
    [in] Die Anzahl von Typparametern, wenn der Typ generisch ist. Die Anzahl von Typparametern (falls vorhanden) muss der für die Klasse erforderlichen Zahl entsprechen.

  • ppTypeArgs
    [in] Ein Array von Zeigern, von denen jeder auf ein ICorDebugType-Objekt zeigt, das einen Typparameter darstellt. Wenn die Klasse nicht generisch ist, ist dieser Wert NULL.

  • ppType
    [out] Ein Zeiger auf die Adresse eines ICorDebugType-Objekts, das die Typdeklaration darstellt. Dieses Objekt entspricht einem Type-Objekt in verwaltetem Code.

Hinweise

Bei einer nicht generischen Klasse, d. h. ohne Typparameter, ruft GetParameterizedType einfach das der Klasse entsprechende Laufzeittypobjekt ab. Der elementType-Parameter sollte auf den richtigen Elementtyp für die Klasse festgelegt werden: ELEMENT_TYPE_VALUETYPE, wenn es sich bei der Klasse um einen Werttyp handelt, andernfalls ELEMENT_TYPE_CLASS.

Wenn die Klasse Typparameter akzeptiert (z. B. ArrayList<T>), können Sie mit GetParameterizedType ein Typobjekt für einen instanziierten Typ wie ArrayList<int> erstellen.

Hintergrundinformationen

In .NET Framework, Version 1.0 und 1.1, konnte jeder Typ in den Metadaten direkt einem Typ im laufenden Prozess zugeordnet sein. Daher verfügten ein Metadatentyp und ein Laufzeittyp im laufenden Prozess über eine einzelne Darstellung. Ein generischer Typ in den Metadaten kann jedoch vielen verschiedenen Instanziierungen des Typs im laufenden Prozess zugeordnet sein. So kann zum Beispiel der Metadatentyp SortedList<K,V>SortedList<String, EmployeeRecord>, SortedList<Int32, String>, SortedList<String,Array<Int32>> usw. zugeordnet sein. Sie benötigen daher eine Möglichkeit, die Instanziierung zu behandeln.

In .NET Framework, Version 2.0, wird die ICorDebugType-Schnittstelle eingeführt. Für einen generischen Typ stellt ein ICorDebugClass-Objekt oder ein ICorDebugClass2-Objekt den nicht instanziierten Typ (SortedList<K,V>) und ein ICorDebugType-Objekt die verschiedenen instanziierten Typen dar. Mit einem ICorDebugClass-Objekt oder einem ICorDebugClass2-Objekt können Sie ein ICorDebugType-Objekt für eine beliebige Instanziierung erstellen, indem Sie die ICorDebugClass2::GetParameterizedType-Methode aufrufen. Sie können auch ein ICorDebugType-Objekt für einen einfachen Typ, z. B. Int32, oder für einen nicht generischen Typ erstellen.

Die Einführung des ICorDebugType-Objekts als Typ, wie er von der Laufzeit interpretiert wird, hat Auswirkungen, die sich über die gesamte API hinweg bemerkbar machen. Funktionen, die zuvor ein ICorDebugClass-Objekt oder ein ICorDebugClass2-Objekt oder sogar einen CorElementType-Wert benötigten, werden nun so verallgemeinert, dass sie ein ICorDebugType-Objekt verwenden.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: CorDebug.idl

Bibliothek: CorGuids.lib

.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Siehe auch

Referenz

ICorDebugClass2