ジェネリックとリフレクション (C# プログラミング ガイド)
更新 : 2007 年 11 月
共通言語ランタイム (CLR) は、実行時にジェネリック型情報にアクセスできるため、非ジェネリック型の場合と同じように、リフレクションを使用してジェネリック型の情報を取得できます。詳細については、「ランタイムのジェネリック (C# プログラミング ガイド)」を参照してください。
.NET Framework 2.0 では、ジェネリック型のランタイム情報を有効にするために Type クラスに新しいメンバが追加されています。新しいメソッドとプロパティの使い方の詳細については、これらのクラスに関するドキュメントを参照してください。System.Reflection.Emit 名前空間にも、ジェネリックをサポートする新しいメンバが追加されています。方法 : リフレクション出力を使用してジェネリック型を定義する を参照してください。
ジェネリック リフレクションで使用する用語に関する一定の条件の一覧については、IsGenericType プロパティの解説を参照してください。
System.Type メンバ名 |
説明 |
---|---|
型がジェネリックの場合、true を返します。 |
|
構築された型に対して指定された型引数、またはジェネリック型定義の型パラメータを表す Type オブジェクトの配列を返します。 |
|
現在の構築された型の基になっているジェネリック型定義を返します。 |
|
現在のジェネリック型パラメータの制約を表す Type オブジェクトの配列を返します。 |
|
型、またはその型を囲む型またはメソッドのいずれかに、特定の型が指定されていない型パラメータが含まれている場合、true を返します。 |
|
現在のジェネリック型パラメータの特別な制約を表す GenericParameterAttributes フラグの組み合わせを取得します。 |
|
型パラメータを表す Type オブジェクトの場合、型パラメータを宣言したジェネリック型定義またはジェネリック メソッド定義の型パラメータ リストで型パラメータの位置を取得します。 |
|
現在の Type が、ジェネリック型定義またはジェネリック メソッド定義の型パラメータを表しているかどうかを示す値を取得します。 |
|
現在の Type が、他のジェネリック型を構築できるジェネリック型定義を表しているかどうかを示す値を取得します。型がジェネリック型定義を表している場合、true を返します。 |
|
現在のジェネリック型パラメータを定義したジェネリック メソッドを返します。型パラメータがジェネリック メソッドによって定義されていない場合は null を返します。 |
|
現在のジェネリック型定義の型パラメータを型の配列要素に置き換え、その結果構築された型を表す Type オブジェクトを返します。 |
さらに、ジェネリック メソッドのランタイム情報を有効にする新しいメンバが MethodInfo クラスに追加されています。ジェネリック メソッドのリフレクションで使用する用語に関する一定の条件の一覧については、IsGenericMethod プロパティの解説を参照してください。
System.Reflection.MemberInfo メンバ名 |
説明 |
---|---|
メソッドがジェネリックの場合、true を返します。 |
|
構築されたジェネリック メソッドの型引数、またはジェネリック メソッド定義の型パラメータを表す Type オブジェクトの配列を返します。 |
|
現在の構築されたメソッドの基になっているジェネリック メソッド定義を返します。 |
|
メソッド、またはそれを囲む型のいずれかに、特定の型が指定されていない型パラメータが含まれている場合、true を返します。 |
|
現在の MethodInfo がジェネリック メソッド定義を表している場合、true を返します。 |
|
現在のジェネリック メソッド定義の型パラメータを型の配列要素に置き換え、その結果構築されるメソッドを表す MethodInfo オブジェクトを返します。 |