【问题标题】:How to properly hide methods and properties from intellisense如何从智能感知中正确隐藏方法和属性
【发布时间】:2011-04-04 12:46:49
【问题描述】:

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

我正在为我们不希望向消费者公开的自动化测试编写 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);
}

【问题讨论】:

  • 为什么要导出不想被看到的方法?只是不要导出它!
  • 部分原因是应用程序开发人员教我如何访问内部逻辑(昨天),部分原因是数据模型远离最终用户。我们的测试框架与我们的应用程序交互的方式与我们期望第三方开发人员的交互方式相同。

标签: c++ com interop idl


【解决方案1】:

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

[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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2020-10-24
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多