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