将 2 个 wcf 服务与需要与参数相同的 class 的方法一起使用时出错

Error using 2 wcf services with methods that require the same class as param

错误在客户端演示代码

的注释中引用

服务 1 演示代码

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

服务 2 演示代码

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

客户端演示代码

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

错误信息

我需要能够使用 ServiceReference1 中的 Person。也许 Class 转换会解决问题,但我不允许这样做

ServiceReference1 和 ServiceReference2 设置

错误信息很清楚:

Argument 1: cannot convert from WpfApplicatoin1.ServiceReference1.Person to WpfApplication1.ServiceReference2.Person

对象不同,即使代码相同,因为命名空间。

您需要从 WpfApplication1.ServiceReference1.Person 映射到 WcfApplication1.ServiceReference2.Person,或者将 Person 对象放在由服务和客户端共享的单独程序集中。

例如,如果您要在两者之间进行映射,您可能会有这样的内容:

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);