如何正确隐藏intellisense中的方法和属性

时间:2010-08-26 21:40:32

标签: c++ com interop idl

有没有人知道如何正确隐藏intellisense中的类,方法和属性,同时保留调用它们的能力;所以它们不出现在从类型库生成的互操作程序集中?

我正在编写用于自动化测试的API挂钩,我们不希望它们暴露给消费者。这似乎可以从我们的应用程序附带的内置SaxBasic编辑器中很好地工作,但是当引用添加到我们的互操作程序集时,无法隐藏对象,方法和属性。

以下是我试图隐藏这些内容的一个例子;已经尝试了各种排列,提前谢谢!

    [
    object,
    uuid(guid),
    helpstring("help"),
    version(ver),
    dual,
    nonextensible,
    oleautomation,
    pointer_default(unique)
]IApplication.VisibleObj
interface IObj : IDispatch
{
        //tried [hidden] here, no luck
 [propget, id(91001), helpstring("Help str. Available as of Object Model Version X.X.X."), hidden]//again tried [hidden] here, no luck
    HRESULT Obj([out, retval] IObj** ppObj);
}

1 个答案:

答案 0 :(得分:4)

Visual Studio 2008和2010现在忽略了'hidden'属性,使隐藏的界面可以浏览。 似乎必须通过装饰以下类别,方法和属性来修改互操作程序集,这些类,方法和属性旨在存在但不可浏览:

[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]

来源:http://www.summsoft.com/blogs/garyvsta/archive/2009/02/06/preserving-hidden-elements-in-a-com-interop-assembly.aspx