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