Mi primera pregunta para que la esperanza es adecuado:WCF Servicio de Referencia genera su propia interfaz de contrato, no va a volver a utilizar las minas
conjunto de la interfaz compartida - en los que he un montaje 'compartida' que tiene una interfaz, dejar que la llamada es IDocRepository
. Está marcado con [ServiceContract]
y hay varios métodos con [OperationContract]
.
Conjuntos de implementación WCF - Tengo dos proyectos de servicio WCF, cada uno haciendo referencia al ensamblado compartido, cada uno implementando esa interfaz como un servicio WCF.
Ensamblaje para el consumidor - Finalmente, tengo un proyecto de 'cliente', que también hace referencia al ensamblado compartido, con una referencia a cada uno de los dos servicios de WCF.
Sin embargo, las referencias de servicios generados en el montaje de los consumidores se derivan de una versión generada automáticamente de la interfaz:
public partial class ExampleClient : System.ServiceModel.ClientBase<SomeNamespace.ExampleSvcRef.IDocRepository>, SomeNamespace.ExampleSvcRef.IDocRepository {
Lo que esperaba
yo habría esperado que ambas referencias que, en cambio heredará automáticamente la interfaz que definí, que el ensamblaje consumidor/cliente también hace referencia. Algo así como la reutilización de las clases que proporciona para los tipos de parámetros y de retorno, pero para la interfaz de servicio.
Por qué
De modo que pueda crear una instancia del proxy de referencia, bien servicio y echarlo a mi tipo de interfaz.
Entonces, ¿podría modificar el código generado a mano cada vez, pero debería haber una mejor manera ...?
(edit: Tengo 'tipos reutilización en ensamblados de referencia' y 'tipos reutilización en todos los ensamblados de referencia' opciones seleccionadas para ambas referencias de servicio)
Gran solución, gracias –
Iba con la segunda opción, pero me sale el error de que debe haber una EndpointAddress especificada. Tengo un punto final configurado en el archivo de configuración, con el mismo contrato (interfaz) especificado, pero no parece estar buscando allí? ¿Puede usted ayudar? –
No importa; necesita pasar el nombre de la configuración del punto final al constructor ChannelFactory <>. –