获取声明为动态的对象的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();
干得好…