Вы обязательно должны иметь общий DataContract, используемый двумя отдельными службами, IQuestionService и IAnswerService.
У вас есть оба конца провода, например и клиент и сервер? Оба .NET / WCF? В этом случае вы можете, например, поместите ваш DataContract и все ваши общие интерфейсы в одну отдельную сборку и поделитесь этой сборкой между двумя службами, как на сервере, так и на клиенте.
На клиенте, если вы запустите svcutil, вы можете указать ему использовать типы из данной общей сборки, например, скажи ему НЕ , чтобы заново создать типы данных Question
и Answer
, но использовать их из своей сборки. Проверьте параметр /reference
(или /r
) svcutil.
svcutil (your WSDL) /r (your common assembly here) ......
Или другой вариант - пропустить svcutil все вместе, создать свой ChannelFactory и т. Д. И создать экземпляр клиента 100% вручную, без ссылки на сервис и т. Д.
ChannelFactory<IQuestion> cFac =
new ChannelFactory<IQuestion>("ConfigName");
IQuestion proxy = cFac.CreateChannel();
, а затем используйте объект proxy
, подобный тому, который вы используете сейчас, сгенерированный svcutil.
Это, конечно, работает, только если у вас есть оба конца провода.
Марк