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 以降で使用可能
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示