【发布时间】:2010-11-21 07:59:04
【问题描述】:
有谁知道在 VisualStudio 的调试器中是否以及如何正确地查看 COM / Interop 对象(以其正确的类型)?我得到的只是'evil' System.__ComObject 值(即使它正确识别了类型)?
例如:
【问题讨论】:
-
/me 耐心等待一个好的答案。 :)
标签: .net com interop com-interop
有谁知道在 VisualStudio 的调试器中是否以及如何正确地查看 COM / Interop 对象(以其正确的类型)?我得到的只是'evil' System.__ComObject 值(即使它正确识别了类型)?
例如:
【问题讨论】:
标签: .net com interop com-interop
来自.NET and COM: The Complete Interoperability Guide:
当一个 COM 对象的实例通过方法的返回类型或引用参数返回给您,而 CLR 无法确定类型时,您将获得泛型 System.__ComObject 类型,因为 COM 对象总是作为接口指针传递/返回。
您可以尝试使用Marshal.CreateWrapperOfType 更改返回类型,如下例所示:
MyType newObject = (MyType)Marshal.CreateWrapperOfType(oldObject, typeof(MyType))
然后您可以在监视窗口中查看 newObject,它应该具有预期的属性。
如果调用失败,则会抛出 InvalidCastException。
【讨论】:
【讨论】:
我使用即时窗口手动查询 COM 对象的属性。缺点是我认为你没有智能感知,所以你必须确切地知道你想检查什么。
【讨论】: