|
Software
|
|
Escrito por Pablushka
|
|
Viernes 11 de Diciembre de 2009 17:47 |
|
C# es un lenguaje muy poderoso y las mejoras que se suceden con el tiempo lo hacen aún mucho más potente y robusto. Sin embargo a veces nos encontramos con errores que suelen ser bastante complicados de depurar. Este apareció cuando quise crear un objeto COM desde una dll hecha en c# que tiene una referencia a un webservice:
Type library exporter warning processing 'SmartSourceMicro.wsRemoteDeposit.RemoteDepositSoapClient, SmartSourceMicro'. Warning: Type library exporter encountered a type that derives from a generic class and is not markedas [ClassInterface(ClassInterfaceType.None)]. Class interfaces cannot be exposed for such types. Consider marking the type with [ClassInterface(ClassInterfaceType.None)] and exposing an explicit interface as the default interface to COM using the ComDefaultInterface attribute.
Bueno, como se imaginarán la depuración del error fue bastante engorrosa. Muchas cosas encontre en la web sobre este error pero ultimamente pareciera que los errores que me aparecen son demasiado específicos y poco frecuentes porque casi no encuentro solución. Es por ello que decidí publicar la solución de éste para que nadie sufra lo mismo que yo:
1. El error se debe a que en mi web service, utilizo métodos y propiedades de un tipo de datos que no se puede traducir a un objeto COM, como por ejemplo un List<>. Ahora bien, yo no quiero que los métodos del webservice sean parte del objeto COM, entoces...
2. El error se soluciona si al crear la referencia al webservice, le decimos que ésta no sea public sino internal, para ello, al crear la referencia al webservice, en el cuadro de diálogo que nos pide el server y el nombre, presionamos el botón Advanced y allí escogemos que el ámbito de la instancia de nuestro webservice sea Internal, de este modo los métodos y propiedades del webservice no se exportan al objeto COM y se usan, precisamente, internamente.
Listo. Así de fácil. Al compilar el proyecto desaparece el molesto warning.
|
|
Última actualización el Jueves 28 de Enero de 2010 17:48 |