MEFでジェネリック型をエクスポートすることをいじり回したことから生じた、これにはいくつかの混乱があります
私は気づきました:
new Dictionary<string,bool>().GetType() == typeof(Dictionary<,>)
false
new Dictionary<string,bool>().GetType().GetGenericTypeDefinition() == typeof(Dictionary<,>)
true
ただし、Dictionary<,> 自体は「型」とは見なされません。これは実際にコンパイル エラーを生成するためです。
new Dictionary<string,bool> as Dictionary<,>
Type expected
new Dictionary<string,bool> is Dictionary<,>
Type expected
私の質問は、Dictionary<,> は実際には型ですか? .NET はジェネリック型を非ジェネリック型とは異なる方法で扱いますか?
MEFでは、ジェネリッククラスを次のようにエクスポートできます
[Export(typeof(MyGenericClass<,>))]
そして、これは次のようなインポート要件を満たします
[Import]
public MyGenericClass<string, long> Instance { get; set; }
ここで型システムのルールについて混乱しています