次の方法で共有


ICorDebugClass2::GetParameterizedType メソッド

このクラスの型宣言を取得します。

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

パラメーター

  • elementType
    [入力] このクラスの要素の型を指定する CorElementType 列挙体の値。ICorDebugClass2 が値型を表す場合、この値を ELEMENT_TYPE_VALUETYPE に設定します。 ICorDebugClass2 が複合型を表す場合、この値を ELEMENT_TYPE_CLASS に設定します。

  • nTypeArgs
    [入力] 型がジェネリックの場合の型パラメーターの数。 型パラメーターの数は (存在する場合)、クラスに必要な数と一致している必要があります。

  • ppTypeArgs
    [入力] ポインターの配列。各ポインターは、型パラメーターを表す ICorDebugType オブジェクトを指します。 クラスが非ジェネリック型の場合、この値は null です。

  • ppType
    [出力] 型宣言を表す ICorDebugType オブジェクトのアドレスへのポインター。 このオブジェクトはマネージ コードの Type オブジェクトと同じです。

解説

クラスが非ジェネリックの場合、つまり型パラメーターがない場合、GetParameterizedType は単にクラスに対応するランタイム型オブジェクトを取得します。 elementType パラメーターは、クラスの適切な要素型に設定する必要があります。クラスが値型の場合は ELEMENT_TYPE_VALUETYPE、それ以外の場合は ELEMENT_TYPE_CLASS に設定します。

クラスが型パラメーター (ArrayList<T> など) を受け取る場合、GetParameterizedType を使用して、ArrayList<int> などのインスタンス化された型の型オブジェクトを構築できます。

背景情報

.NET Framework Version 1.0 および 1.1 では、メタデータのすべての型を実行中のプロセスの型に直接対応付けることができました。 つまり、メタデータ型とランタイム型は実行中のプロセス内で単一の表現を持っていました。 ところが、メタデータの特定のジェネリック型は、実行中のプロセスで同じ型を持つ複数の異なるインスタンスに対応付けることができます。 たとえば、メタデータ型 SortedList<K,V> は、SortedList<String, EmployeeRecord>、SortedList<Int32, String>、SortedList<String,Int32>> などに対応付けることができます。 そのため、型のインスタンス化を処理する手段が必要になります。

.NET Framework Version 2.0 では、ICorDebugType インターフェイスが導入されました。 ジェネリック型の場合、ICorDebugClass オブジェクトまたは ICorDebugClass2 オブジェクトはインスタンス化されない型 (SortedList<K,V>) を表し、ICorDebugType オブジェクトは各種のインスタンス化された型を表します。 ICorDebugClass オブジェクトまたは ICorDebugClass2 オブジェクトがあれば、ICorDebugClass2::GetParameterizedType メソッドを呼び出して、任意のインスタンスの ICorDebugType オブジェクトを作成できます。 また、Int32 などの単純型や、非ジェネリック型の ICorDebugType オブジェクトも作成できます。

型の実行時の概念を表す ICorDebugType オブジェクトの導入は、API 全体に波及効果をもたらします。 以前に ICorDebugClass オブジェクト、ICorDebugClass2 オブジェクト、または CorElementType 値を受け取っていた関数は、ICorDebugType オブジェクトを受け取るように一般化されました。

必要条件

プラットフォーム: 「.NET Framework システム要件」を参照

ヘッダー: CorDebug.idl、CorDebug.h

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICorDebugClass2 インターフェイス