ジェネリック型の型パラメータ(例えばList<int>
における< >
内の部分)を取得したい場合はGetGenericArgumentsメソッドを使うことができます。 型パラメータの情報もTypeクラスとして取得されます。 Typeが型パラメータを表す場合、IsGenericParameterプロパティがtrueとなります。
GetGenericArgumentsメソッドは、オープンジェネリック型・クローズジェネリック型のどちらの型情報に対しても用いることができます。
ジェネリックメソッドの型パラメータも同様に取得することができます。 この場合、まず対象となるジェネリックメソッドのMethodInfoを取得し、その後MethodInfo.GetGenericArgumentsメソッドを呼び出します。
ジェネリックメソッドの型パラメータを取得する
using System;
using System.Reflection;
class C {
public void M<TArg1, TArg2>(TArg1 arg1, TArg2 arg2)
{
}
}
class Sample {
static void Main()
{
// メソッドC.M<T>のメソッド情報を取得する
var m = typeof(C).GetMethod("M");
Console.Write("{0}: ", m.Name);
foreach (var ta in m.GetGenericArguments()) {
Console.Write("{0}, ", ta.Name);
}
Console.WriteLine();
}
}
実行結果
M: TArg1, TArg2,
この例で使用しているGetMethodメソッドについては後述の§.メンバ情報の取得 (MemberInfo)で解説しています。 また、型パラメータを含むメソッドやジェネリックメソッドの取得に関しては§.型パラメータを指定した取得 (ジェネリック型のメソッド/ジェネリックメソッドの取得)を参照してください。