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

Rad*_* M. 28 c# types dynamic

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

dynamic tmp = Activator.CreateInstance(assembly, nmspace + "." + typeName);
Type unknown = tmp.GetType();
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*arr 32

你需要这样做......

Type unknown = ((ObjectHandle)tmp).Unwrap().GetType();
Run Code Online (Sandbox Code Playgroud)

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

Activator.CreateInstance(typeof(Foo))
Run Code Online (Sandbox Code Playgroud)

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