Как правильно скрыть методы и свойства от intellisense - PullRequest
6 голосов
/ 27 августа 2010

Кто-нибудь знает, как правильно скрывать классы, методы и свойства от 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 Ответ

4 голосов
/ 11 сентября 2010

Похоже, что 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

...