【发布时间】:2011-06-11 12:33:24
【问题描述】:
我的项目引用了一个 COM DLL,该 DLL 的某些类型使用属性 [TypeLibType(TypeLibTypeFlags.FHidden)] 进行了注释。 MSDN 说,“该类型不应该显示给浏览器。”有没有办法通过 IntelliSense 查看这些类型?
【问题讨论】:
标签: c# visual-studio visual-studio-2010 com
我的项目引用了一个 COM DLL,该 DLL 的某些类型使用属性 [TypeLibType(TypeLibTypeFlags.FHidden)] 进行了注释。 MSDN 说,“该类型不应该显示给浏览器。”有没有办法通过 IntelliSense 查看这些类型?
【问题讨论】:
标签: c# visual-studio visual-studio-2010 com
首先确保您没有在 VisualStudio 选项(TextEditor/C# 分支)中选中“隐藏高级成员”,但我认为您没有这样做,因为默认值未选中。
可以通过自己声明有问题的接口并忽略该属性来解决此问题。您应该能够生成互操作 DLL,然后使用反射器查看它。几乎总是可以在 C# 源代码中编写 COM 声明,但有时会变得很棘手。
如果你想走那条路,会有一些陷阱,特别是反射器不会以正确的顺序向你显示接口成员。要找出正确的顺序,请使用 ildasm 或 TLB 查看器(两者都包含在 VisualStudio 中)。另请注意,如果您从不调用接口方法,您可以只声明一个虚拟对象来维护顺序,并且不需要完整的方法签名,这样可以节省大量工作。
【讨论】:
TypeLibTypeFlags.FHidden 的选项。