通常,Visual Studio的“动态视图”显示对象的成员。有时,该对象需要运行所有线程,并且您必须手动允许它才能查看成员。但是,使用此COM对象,当我尝试查看成员时出现错误:
无法评估表达式。操作不受支持。未知错误:0x80070057。
以下是该流程的屏幕截图:
答案 0 :(得分:0)
Hans Passant的keyboards中的以下评论帮助我找到了解决方案:
您通常可以将其强制转换为其支持的某种接口类型 零件。然后调试器再次变得聪明......用它迭代它 的foreach。实际的底层运行时类型是代理,在您执行时发生 从工作线程调用该方法,或者它是否为进程外 服务器
解决方案是在尝试使用它之前首先迭代COM对象。因此,如果COM对象是一个集合,则迭代这些项目,转换为接口类型,并将结果存储在var
或自定义模型中。
这样的事情:
var myObject = com.GetStuff().OfType<InterfaceClass>().Select(s => new { Name = s.Name, Description = s.Description });
答案 1 :(得分:0)
就我而言,通过启用“使用托管兼容模式”选项,我能够在调试器中查看com对象类型
在Visual Studio中,如果您打开工具>>选项,然后调试>>常规,请确保已选中“使用受管兼容模式”选项。
这应该将com对象显示为调试器中的正确类型。