我想获得动态对象的类型,例如:
dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();
除了上面的内容之外,GetType()返回动态对象的包装类型,而不是包装对象的类型。谢谢!
答案 0 :(得分:32)
你需要这样做......
Type unknown = ((ObjectHandle)tmp).Unwrap().GetType();
顺便说一句,这有点令人困惑,因为如果你在当前程序集中的类型上调用Activator.CreateInstance ......
Activator.CreateInstance(typeof(Foo))
...对象没有被包裹,原始代码工作正常。
答案 1 :(得分:3)
如果您可以使用Activator.CreateInstance,则可以直接使用:
object tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();