Si está definiendo tanto el cliente como el servicio, no necesita utilizar las clases WSDL-generate. Mueva los objetos compartidos a un ensamblaje separado y haga referencia a ellos desde proyectos de cliente y servidor. Cuando crea la referencia de servicio, hay una opción "avanzada" (que creo que está activada por defecto) que reutiliza las clases conocidas del WSDL en lugar de generar nuevas.
Mejor aún, si mueve el contrato de servicio a su biblioteca compartida, ni siquiera necesita crear la referencia de servicio, puede simplemente llamar al ChannelFactory
directamente y eliminar toda la clase de proxy autogenerada.
Tengo una demostración de cómo hacer ambas cosas en mi blog: http://blog.kutulu.org/2012/03/proxy-free-wcf-ditching-proxy.html
Si es absolutamente necesario utilizar el WSDL del servicio (por ejemplo, usted no tiene control sobre el lado del servicio y podría cambiarle), entonces puede extender las clases parciales creadas por VS (como sugirió). La mayoría de las clases de autogeneración que obtienes de VS estos días son clases parciales específicamente para hacer posible este tipo de extensión. La desventaja, por supuesto, es que nada garantiza que los métodos de clases parciales adicionales del cliente y del servidor sean los mismos. Definitivamente consideraría esto una opción de último recurso.
WCF generará una clase de proxy del lado del cliente que tenga la misma ** firma XML ** serializada/deserializada, pero eso ** ** propaga "cualquier método (estrictamente solo datos) las propiedades públicas de su clase) del servidor al cliente. –
¿Qué veo pero cómo lograr mi objetivo? – levi