2

ランタイムオブジェクトのジェネリック型と同じクラスの生のジェネリック型があるとします。

var type = (new List<Int32>()).GetType();
var genericListType = typeof(List<>);

ある種のGetRawGenericTypeメソッドが必要なので、式

GetRawGenericType(type) == genericListType

true を返します。これを実装する方法はありますか?

備考:

オブジェクトの型がわかりません。ジェネリック型である可能性があります。私が書いているコードでは、辞書のキーとして使用されるため、正確なジェネリック型を知る必要があります。たとえば、次のようになります。

private readonly Dictionary<Type, TValue> Mapping = 
    new Dictionary<Type, TValue> { 
            {typeof(IEnumerable<>), *SomeValue*},
            ...
        }

お時間を割いていただきありがとうございます。

4

2 に答える 2

4

Type.GetGenericTypeDefinitionあなたが探しているものです。

于 2012-10-19T08:17:11.880 に答える
3

GetGenericTypeDefinition次の方法を使用します。

var type = (new List<Int32>()).GetType();
var genericListType = typeof(List<>);

Console.WriteLine(type.GetGenericTypeDefinition() == genericListType);

ショー

true
于 2012-10-19T08:19:50.230 に答える