2010-08-26 11 views
6

Qualcuno saprebbe come nascondere correttamente classi, metodi e proprietà da intellisense preservando al contempo la possibilità di chiamarli; e quindi non appaiono negli assembly di interoperabilità generati da una libreria di tipi?Come nascondere correttamente metodi e proprietà da intellisense

Sto scrivendo ganci API per test automatici che non vogliamo ancora esposti ai consumatori. Questo sembra funzionare bene dall'editor SaxBasic integrato della nostra applicazione, ma non riesce a nascondere gli oggetti, i metodi e le proprietà quando viene aggiunto un riferimento al nostro assembly di interoperabilità.

Ecco un esempio di come sto tentando di nasconderlo; varie permutazioni sono state provate, grazie in anticipo!

[ 
    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

perché si esporta metodo che si don voglio essere visto? semplicemente non esportarlo! – Andrey

+0

In parte perché in questo modo gli sviluppatori dell'applicazione mi hanno insegnato come accedere alla logica interna (ieri) e parzialmente perché il modello di dati è altrimenti tenuto lontano dall'utente finale. Il nostro framework di test interagisce con la nostra applicazione nello stesso modo in cui ci aspetteremmo da sviluppatori di terze parti. – BrMcMullin

risposta

4

Sembra che Visual Studio 2008 e 2010 ignorino ora l'attributo "nascosto", rendendo le interfacce altrimenti nascoste sfuggenti. Sembra che l'assembly di interoperabilità deve essere modificato dal adornano il seguente su classi, metodi e proprietà che sono destinati ad esistere, ma non essere navigabile:

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

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

Problemi correlati