Типы сервисных справочных комплексов - PullRequest
3 голосов
/ 01 июля 2011

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

вопрос в том ... мне придется написать какую-нибудь рефлексивную подпрограмму глубокого копирования, чтобы эффективно создать классы обслуживания, сгенерированные из исходных типов?или есть лучший вариант

любая помощь, которую когда-либо получал очень радостно

nat

Ответы [ 3 ]

7 голосов
/ 01 июля 2011

Когда вы добавляете сервисную ссылку в код, выберите Advanced, и вы увидите опцию Reuse types in referenced assemblies.Если вы уверены, что установлен этот флажок и ссылка добавлена ​​в проект, WCF не будет генерировать типы прокси и вместо этого использовать ссылочные типы.

Если вы уже добавили ссылку на службу, укажите свою общую папку.сначала введите, а затем щелкните правой кнопкой мыши Справочник по службам и выберите Configure Service Reference, чтобы получить его для регенерации клиентского кода с использованием указанных вами типов.

5 голосов
/ 01 июля 2011

Нет, вы можете сделать это: см. Мой вопрос здесь:

Ссылка на службу WCF создает собственный интерфейс контракта, не будет повторно использовать мой

Вы можетеобщая сборка с интерфейсами, типами, и служба, и клиент (ы) могут ссылаться на нее:)

Опция 'reuse referenced types ..' охватывает сложные типы, но ответ выше также охватывает повторное использованиетип интерфейса, который IMO является намного лучшим вариантом и не охвачен этим параметром VS.

0 голосов
/ 01 июля 2011

Если я не понял неправильно, отметив «Повторное использование типов в ссылочных сборках» в разделе «Дополнительные параметры» в «Добавить ссылку на службу», все контракты данных, которые соответствуют контрактам в ссылочной сборке, будут повторно использованы и не регенерированы.

...