6

クラス、メソッド、およびプロパティをインテリセンスから適切に非表示にしながら、それらを呼び出す機能を維持する方法を知っている人はいますか? タイプ ライブラリから生成された相互運用機能アセンブリには表示されませんか?

まだ消費者に公開したくない自動テスト用の 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);
}
4

1 に答える 1

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

于 2010-09-10T22:53:24.677 に答える