インテリセンスからメソッドとプロパティを適切に隠す方法

c++ com idl interop
インテリセンスからメソッドとプロパティを適切に隠す方法

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

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

  6  0


ベストアンサー

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

4


タイトルとURLをコピーしました