2010-08-26 7 views
6

¿Alguien sabría cómo ocultar correctamente las clases, los métodos y las propiedades de intellisense conservando la capacidad de llamarlos? y entonces no aparecen en ensamblados de interoperabilidad que se generan a partir de una biblioteca de tipos?Cómo ocultar correctamente los métodos y propiedades de intellisense

Estoy escribiendo ganchos API para pruebas automatizadas que aún no queremos que se expongan a los consumidores. Esto parece funcionar bien desde el editor incorporado de SaxBasic que viene con nuestra aplicación, pero no puede ocultar los objetos, métodos y propiedades cuando se agrega una referencia a nuestro ensamblado de interoperabilidad.

Aquí hay un ejemplo de cómo estoy tratando de ocultar estos; varias permutaciones han sido probadas, ¡gracias de antemano!

[ 
    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

¿por qué se exporta método que don ¿Quieres que te vean? ¡simplemente no lo exportes! – Andrey

+0

Parcialmente porque así es como los desarrolladores de la aplicación me enseñaron cómo acceder a la lógica interna (ayer) y en parte porque el modelo de datos está lejos del usuario final. Nuestro marco de prueba interactúa con nuestra aplicación de la misma manera que esperaríamos que lo hicieran los desarrolladores de terceros. – BrMcMullin

Respuesta

4

Parece Visual Studio 2008 y 2010 ahora ignorar el atributo 'oculto', por lo que las interfaces de otro modo ocultas navegable. aparece el ensamblado de interoperabilidad debe ser modificado por adornar los siguientes servicios por clases, métodos y propiedades que están destinados a existir, pero que no sea navegable:

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

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

Cuestiones relacionadas