2017-01-26 5 views
0

ссылаются ошибка в комментариях Client демонстрационного кодексаОшибки при помощи 2 ФОС услуг с помощью методов, которые требуют того же класса, как пары

Сервис 1 Демонстрационного Код

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

Service 2 Демо-код

[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 

Сообщение об ошибке

enter image description here

Мне нужно, чтобы иметь возможность использовать Человек из ServiceReference1. Может быть, класс бросили бы решить эту проблему, но я не имею права делать это

ServiceReference1 и ServiceReference2 Настройки

enter image description here

+0

Продлайт 2 WCF службы имеют один и тот же класс 'Person'? Если нет, то то, что вы пытаетесь сделать, не будет работать. У вас есть два разных класса Person на клиенте для каждой службы. И эти 2 класса не имеют ничего общего. –

+0

@DarinDimitrov Да, в 2 WCF-сервисах класс Person тот же – Elkin

+0

Определяется ли класс Person для каждого класса WebServices или Person, определенного в вашем приложении? –

ответ

1

Сообщение об ошибке ясно:

Аргумент 1: не может от WpfApplicatoin1.ServiceReference1.Person до 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);