我想要获取动态对象的类型,类似于:
dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();
除了以上情况外,GetType() 返回的是动态对象包装器的类型而不是被包装对象的类型。谢谢!
我想要获取动态对象的类型,类似于:
dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();
除了以上情况外,GetType() 返回的是动态对象包装器的类型而不是被包装对象的类型。谢谢!
你需要这样做...
Type unknown = ((ObjectHandle)tmp).Unwrap().GetType();
顺便提一句,这有点令人困惑,因为如果你在当前程序集中调用Activator.CreateInstance方法...
Activator.CreateInstance(typeof(Foo))
...对象没有被包裹,原始代码可以正常工作。
dynamic
无法转换为 ObjectHandle
,它会给出以下错误:{"Cannot convert type 'System.__ComObject' to 'System.Runtime.Remoting.ObjectHandle'"}
- Franckobject tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();