La mia prima domanda quindi spero è adatto:WCF Service Reference genera la propria interfaccia di contratto, non riutilizzare il mio
assemblaggio interfaccia comune - Ho un assembly 'condiviso', che dispone di un'interfaccia, Chiamiamo it IDocRepository
. È contrassegnato con [ServiceContract]
e vi sono diversi metodi contrassegnati da [OperationContract]
.
Insieme di implementazione WCF - Ho due progetti di servizio WCF, ognuno dei quali fa riferimento all'assembly condiviso, ciascuno implementando quell'interfaccia come servizio WCF.
Assemblaggio consumatori - Infine, ho un progetto "client", che fa anche riferimento all'assembly condiviso, con un riferimento a ciascuno dei due servizi WCF.
Tuttavia, i riferimenti dei servizi generati nel montaggio dei consumatori derivano da una versione generata automaticamente dell'interfaccia:
public partial class ExampleClient : System.ServiceModel.ClientBase<SomeNamespace.ExampleSvcRef.IDocRepository>, SomeNamespace.ExampleSvcRef.IDocRepository {
Quello che mi aspettavo
avrei sperato che i due riferimenti sarebbero invece ereditare automaticamente l'interfaccia che ho definito, che fa riferimento anche all'assembly cliente/cliente. Un po 'come il riutilizzo delle classi che fornisce parametri e tipi di ritorno, ma per l'interfaccia di servizio.
Perché
In modo che posso creare un'istanza di delega di riferimento sia il servizio e il cast al mio tipo di interfaccia.
Così ho potuto modificare il codice generato a mano ogni volta, ma ci dovrebbe essere modo migliore ...?
(edit: Io ho 'tipi riutilizzo in assemblee di riferimento' e 'tipi riutilizzo di tutti gli assembly referenziati' opzioni selezionate per entrambi i riferimenti di servizio)
Ottima soluzione, grazie –
Stavo andando con la seconda opzione, ma ottengo l'errore che deve essere specificato un EndpointAddress. Ho un endpoint impostato nel file di configurazione, con lo stesso contratto (interfaccia) specificato, ma sembra che non ci stia guardando? Puoi aiutare? –
Nevermind; è necessario passare il nome di configurazione dell'endpoint nel costruttore di ChannelFactory <>. –