【发布时间】:2010-09-08 01:06:15
【问题描述】:
我有一个用 VB.Net 编写的类,通过 ComClass 和 ComVisible 属性暴露给 COM。然后通过 TLB 使该类对 VBA 可用。在 VB6 中,您可以轻松地标记隐藏在对象浏览器中的成员,但仍然可以使用复选标记。在 VB.Net 中,我发现使成员隐藏 VBA 对象浏览器的唯一方法是在名称前加上下划线。
有没有办法隐藏成员而不加下划线?
【问题讨论】:
我有一个用 VB.Net 编写的类,通过 ComClass 和 ComVisible 属性暴露给 COM。然后通过 TLB 使该类对 VBA 可用。在 VB6 中,您可以轻松地标记隐藏在对象浏览器中的成员,但仍然可以使用复选标记。在 VB.Net 中,我发现使成员隐藏 VBA 对象浏览器的唯一方法是在名称前加上下划线。
有没有办法隐藏成员而不加下划线?
【问题讨论】:
您可以查看 System.ComponentModel 命名空间中的 BrowsableAttribute。通常这会对智能感知隐藏属性或方法,但它也可能适用于 COM。
我自己不使用 COM,所以无法真正测试它。
http://msdn.microsoft.com/en-us/library/system.componentmodel.browsableattribute.aspx
【讨论】:
我能想到的唯一方法是手动编辑由 Tlbexp/Regasm 创建的类型库(使用 Oleview 和 Midl 等工具)并将 [hidden] IDL 属性添加到方法中。
【讨论】: