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