2009-04-01 3 views
1

Если у вас естьПоделитесь контрактом WCF между сервисом и silverlight. версии ServiceModel отличаются

interface IServiceA 
{ 
    string GetString(); 
} 

Есть ли способ поделиться этот интерфейс beween проекта веб-службы WCF и проект Silverlight?

Проблема: Обе версии используют разные версии System.ServiceModel.

Я НЕ хочу генерировать и использовать прокси.

ответ

0

Поместите контракты (IXyz) в их собственный проект и укажите его там. При развертывании обязательно добавьте ссылочный путь к соответствующим сборкам.

+0

Спасибо. Но интерфейс IServiceA имеет атрибут ServiceContract, что означает, что отдельный проект имеет ссылку на ServiceModel, и чтобы сделать его доступным с помощью silverlight, это проект silverlight, следовательно, ServiceModel ver. составляет 2,5. Но веб-проект wcf использует ServiceModel ver. 3 .. – 2009-04-01 21:26:43

1

Вы можете попробовать использовать наследование на интерфейсах. Создайте базовый интерфейс (вы можете использовать Resharper для извлечения интерфейса из существующих) и поместить его в отдельную библиотеку классов. Затем наследуйте интерфейс сервисного контракта (тот, который вы отмечаете атрибутами) из базового интерфейса. Используйте сборку с базовым интерфейсом в проекте Silverlight.

+0

Спасибо Хорошая хорошая работа вокруг, но для этого потребуется базовый интерфейс и два разных унаследованных интерфейса, так как оба, используемые silverlight и WCF, требуют атрибутов. Но интерфейсы были бы идентичны, поэтому я бы в итоге получил 3 разных интерфейса (базовый и двое детей), которые были точно такими же. – 2009-04-01 22:51:37

Смежные вопросы