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

我想得到一个动态对象的类型,如:

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

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

你需要这样做……

 Type unknown = ((ObjectHandle)tmp).Unwrap().GetType(); 

顺便说一句,这有点令人困惑,因为如果你在当前程序集中的类型上调用Activator.CreateInstance …

 Activator.CreateInstance(typeof(Foo)) 

…对象没有被包裹,原始代码工作正常。

如果你可以使用Activator.CreateInstance,你可以直接使用:

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

如果您开箱即用,这很简单。 🙂

 Type theType = dynamicItem.GetType(); 

干得好…