使用Reflection在运行时创建动态泛型

MPh*_*tic 6 c# generics reflection dynamic

我试图通过检查键和值的类型并使用Reflection创建适当类型的新Dictionary 来将Dictionary < dynamic,dynamic >转换为静态类型.如果我知道键和值类型,我可以执行以下操作:

Type dictType = typeof(Dictionary<,>);

        newDict = Activator.CreateInstance(dictType.MakeGenericType(new Type[] { keyType, valueType }));
Run Code Online (Sandbox Code Playgroud)

但是,我可能需要创建一个Dictionary < MyKeyType,dynamic >如果值不是所有相同的类型,我无法弄清楚如何指定动态类型,因为

typeof(dynamic)
Run Code Online (Sandbox Code Playgroud)

是不可行的.

我将如何做到这一点,和/或是否有更简单的方法来完成我想要做的事情?

Ale*_*sev 2

Dictionary<MyType, Object>

Activator.CreateInstance(typeof (Dictionary<dynamic, dynamic>));
Run Code Online (Sandbox Code Playgroud)

这实际上创建了一个Dictionary<Object, Object>

我可以看到使用动态而不是对象的唯一用途是在代码输入过程中,您可以使用 dic["some"].MyDynProperty...。但是如果您使用 Activator 创建对象,它将返回 Object,因此在代码输入中没有用处。 ..