Ma première question donc espérons qu'il convient:WCF Service de référence génère sa propre interface contrat, ne sera pas réutiliser le mien
ensemble d'interface partagée - je une assemblée « partagée » qui a une interface, permettent de faire appel de il IDocRepository
. Il est marqué [ServiceContract]
et il existe plusieurs méthodes marquées [OperationContract]
.
Assemblages d'implémentation WCF - J'ai deux projets de service WCF, chacun référençant l'assembly partagé, chacun implémentant cette interface en tant que service WCF.
Assemblage du consommateur - Enfin, j'ai un projet 'client', référençant également l'assembly partagé, avec une référence à chacun des deux services WCF.
Cependant, les références de service générées dans l'ensemble de consommateurs tirent d'une version générée automatiquement de l'interface:
public partial class ExampleClient : System.ServiceModel.ClientBase<SomeNamespace.ExampleSvcRef.IDocRepository>, SomeNamespace.ExampleSvcRef.IDocRepository {
Ce que j'attendais
j'aurais espéré que les deux références seraient plutôt hériter automatiquement l'interface que j'ai définie, que l'assembly consommateur/client fait également référence. Un peu comme la réutilisation des classes qu'il fournit pour les types de paramètre et de retour, mais pour l'interface de service.
Pourquoi
Alors que je peux créer une instance de proxy de référence soit de service et de le jeter à mon type d'interface.
donc je pourrais modifier le code généré par la main à chaque fois, mais il devrait y avoir une meilleure façon ...?
(edit: Je n'ai « types de réutilisation dans les assemblages référencés » et «types de réutilisation dans tous les ensembles référencés de options sélectionnées pour les références de service)
Grande solution, merci –
J'y allais avec la deuxième option, mais j'ai l'erreur qu'il doit y avoir une EndpointAddress spécifiée. J'ai un point de terminaison mis en place dans le fichier de configuration, avec le même contrat (interface) spécifié, mais il ne semble pas regarder là-bas? Pouvez-vous aider? –
Nevermind; vous devez transmettre le nom de la configuration du noeud final au constructeur ChannelFactory <>. –