型パラメータの宣言されている型(またはメソッド)を参照する場合は次のプロパティによって取得することができます。 ジェネリック型の型パラメータを表すTypeではDeclaringTypeプロパティ、ジェネリックメソッドの型パラメータを表すTypeではDeclaringMethodプロパティを参照することにより、宣言されている型を取得できます。
型パラメータが宣言されている型あるいはメソッドを取得する
Imports System
Imports System.Collections.Generic
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()
' ジェネリック型List(Of T)の型パラメータTの型情報を取得する
Dim arg1 As Type = GetType(List(Of)).GetGenericArguments()(0)
' 型パラメータが宣言されている型を表示する
Console.WriteLine("{0} -> {1}", arg1, arg1.DeclaringType)
' ジェネリックメソッドC.M<T>の型パラメータTの型情報を取得する
Dim arg2 As Type = GetType(C).GetMethod("M").GetGenericArguments()(0)
' 型パラメータが宣言されているメソッドを表示する
Console.WriteLine("{0} -> {1}", arg2, arg2.DeclaringMethod)
End Sub
End Class
実行結果
T -> System.Collections.Generic.List`1[T] TArg1 -> Void M[TArg1,TArg2](TArg1, TArg2)