获取声明为动态的对象的Type

时间:2011-09-09 13:41:27

标签: c# dynamic types

我想获得动态对象的类型,例如:

dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();

除了上面的内容之外,GetType()返回动态对象的包装类型,而不是包装对象的类型。谢谢!

2 个答案:

答案 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();