逆にクローズジェネリック型(構築ジェネリック型)の型情報では、GetGenericTypeDefinitionメソッドを使用することでオープンジェネリック型(ジェネリック型定義)の型情報を取得することができます。 言い換えると、GetGenericTypeDefinitionメソッドによって構築ジェネリック型からジェネリック型定義を取得することができます。
例えばDictionary<string, int>
の型情報からDictionary<,>
の型情報を取得したい場合は次のようにします。
クローズジェネリック型からオープンジェネリック型の型情報を取得する
Imports System
Imports System.Collections.Generic
Class Sample
Shared Sub Main()
Dim t1 As Type = GetType(Dictionary(Of String, Integer)) ' クローズジェネリック型
Console.WriteLine(t1)
' Dictionary(Of String, Integer)からDictionary(Of ,)の型情報を作成する
Dim t2 As Type = t1.GetGenericTypeDefinition()
Console.WriteLine(t2)
End Sub
End Class
実行結果
System.Collections.Generic.Dictionary`2[System.String,System.Int32] System.Collections.Generic.Dictionary`2[TKey,TValue]