2017-01-26 2 views
0

L'erreur est référencé dans les commentaires de client Code Démoerreur en utilisant 2 services WCF avec des méthodes qui nécessitent la même classe que param

service 1 Code de démonstration

[ServiceContract] 
    public interface IService1 
    { 
     [OperationContract] 
     Boolean AddPerson1(Person p); 
    } 

Service 2 Code de démonstration

[ServiceContract] 
    public interface IService2 
    { 
     [OperationContract] 
     Boolean AddPerson2(Person p); 
    } 

client Demo code

Person p=ServiceReference1.Person{Name="Peter"}; 
new Service2Client().AddPerson2(p); //Error right here because the method requires ServiceReference2.Person 

Message d'erreur

enter image description here

Je dois être en mesure d'utiliser la personne de ServiceReference1. Peut-être que classe jeté résoudrait le problème, mais je ne suis pas autorisé à le faire

Réglages ServiceReference1 et ServiceReference2

enter image description here

+0

Est-ce que les 2 services WCF partagent la même classe 'Person'? Si non, alors ce que vous essayez de faire ne fonctionnera pas. Vous avez 2 classes Person différentes sur le client pour chaque service. Et ces 2 classes n'ont rien en commun. –

+0

@DarinDimitrov Oui, dans les 2 services WCF, la classe Person est la même – Elkin

+0

La classe Person est-elle définie sur chaque classe WebServices ou Person définie dans votre application? –

Répondre

1

Le message d'erreur est clair:

Argument 1: ne peut pas convertir de WpfApplicatoin1.ServiceReference1.Person à WpfApplication1.ServiceReference2.Person

Les objets sont pas les mêmes, même si le code est le même, à cause des espaces de noms.

Vous devrez mapper de WpfApplication1.ServiceReference1.Person à WcfApplication1.ServiceReference2.Person ou placer l'objet Person dans un assembly distinct partagé par les services et le client.

Par exemple, si vous deviez faire la correspondance entre les deux que vous pourriez avoir quelque chose comme ceci:

Person p = ServiceReference1.Person{Name="Peter"}; 
ServiceReference2.Person p2 = new ServiceReference2.Person() { 
    Property1 = p.Property1, 
    Property2 = p.Property2, 
    // and so on 
}; 
new Service2Client().AddPerson2(p2);