次の方法で共有


ICorDebugClass2::GetParameterizedType メソッド

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

構文

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

パラメーター

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

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

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

ppType
[out] 型宣言を表す ICorDebugType オブジェクトのアドレスへのポインター。 このオブジェクトは、マネージド コード内の Type オブジェクトに相当します。

解説

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

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

背景情報

.NET Framework バージョン 1.0 および 1.1 では、メタデータ内のすべての型を、実行中のプロセスの型に直接マップすることができました。 そのため、メタデータ型とランタイム型には、実行中のプロセスに単一の表現がありました。 ただし、メタデータ内の 1 つのジェネリック型は、実行中のプロセスの型のさまざまなインスタンス化にマップすることができます。 たとえば、メタデータ型 SortedList<K,V>SortedList<String, EmployeeRecord>SortedList<Int32, String>SortedList<String,Array<Int32>> などにマップすることができます。 そのため、型のインスタンス化を処理する方法が必要です。

.NET Framework バージョン 2.0 では、ICorDebugType インターフェイスが導入されています。 ジェネリック型の場合、ICorDebugClass または ICorDebugClass2 オブジェクトはインスタンス化されていない型 (SortedList<K,V>) を表し、ICorDebugType オブジェクトはインスタンス化されたさまざまな型を表します。 ICorDebugClass または ICorDebugClass2 オブジェクトを指定した場合は、ICorDebugClass2::GetParameterizedType メソッドを呼び出すことによって、インスタンス化の対象となる ICorDebugType オブジェクトを作成できます。 また、Int32 などの単純型や非ジェネリック型の ICorDebugType オブジェクトを作成することもできます。

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

必要条件

:システム要件」を参照してください。

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

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 2.0 以降で使用可能