Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Проблема совместного использования доменной модели между WCF и Silverlight Project

Автор вопроса: OliverОтветов: 3

Я пишу крупномасштабное приложение Silverlight. В настоящее время я пишу элементы поиска данных.

Я сейчас воспользовался и выдаю.

У меня есть общий проект, содержащий объекты, на этот проект ссылаются как пользовательский интерфейс, так и служба WCF. Для привязки пользовательскому интерфейсу требуется INotifyPropertyChanged.

Теперь WCF должен использовать те же объекты, но я получаю сообщение об ошибке компилятора:

"Тип System.ComponentModel.INotifyPropertyChanged определен в сборке, на которую нет ссылки".

РЕДАКТИРОВАТЬ: ошибка в службе WCF.

Мне нужен один объектный класс, как мне решить эту проблему?

http://www.pcbuyersguide.co.za/picture.php?albumid=19&pictureid=1708

Спасибо -Oliver

  • Оливер, загорелась лампочка. Я давно не занимался этим. смотри мой ответ. И вы должны изменить заголовок вопроса на что-то вроде модели домена проблемы совместного использования между WCF и Silverlight Project. Sky Sanders 17.02.2010
  • Никто не ответил на мой вопрос, так как я могу отметить ответ .... Oliver 25.02.2010
  • @ Оливер ... ммм ... да. на ваш вопрос был дан ответ. ;-) 17 февраля в 17:00. щелкните ссылку и найдите "Связывание файлов в сборках Silverlight". Sky Sanders 25.02.2010
  • На меня особо не оказывалось давление, но я не получил, чтобы это полностью работало, как вы можете видеть в моем последнем комментарии к вашему ответу. Я чувствую, что мы приближаемся. Спасибо за вашу помощь. Oliver 10.03.2010

wcf

Ответы

Ответ 1 · рейтинг 3 · Sky Sanders

Если вы планируете использовать один и тот же исходный код для своих Entities (домена) как для проекта clr, так и для проекта silverlight, вам нужно будет использовать 2 проекта, поскольку сборки Silverlight не совпадают со сборками CLR.

Добавьте в решение проект библиотеки классов Silverlight, имя не имеет значения, но обычно я использую просто XXXX_SL.

Теперь вы "Добавить существующий элемент" для всех исходных файлов из проекта clr, но заметили раскрывающийся список на кнопке "Открыть" или "Выбрать"? щелкните по нему и "добавить как ссылку" или что там написано.

Теперь вы используете один и тот же источник для обоих проектов, и ваше решение будет скомпилировано.

По пути могут быть внесены некоторые незначительные изменения, но они направят вас на верный путь.

Вот некоторые справочные материалы

Ответ 2 · rerun

вы добавили ссылку в компилируемый проект на System.ComponentModel

Ответ 3 · Oliver

Я нашел здесь метод , который позволяет создавать классы CLR на на стороне службы, а затем можно использовать сгенерированные объекты из ссылки на службу, поскольку классы создаются с помощью INotifyPropertyChanged и ObservableCollection.

Это решает непосредственную проблему границы клиент / сервер, но вписывается в мое решение, потому что для использования сгенерированных объектов вам нужна ссылка на службу. Но у меня есть ProxyClass, который общается с WCF, поэтому я не вижу способа передать эти типы объектов обратно в ViewModel.

Я вижу, что некоторые люди написали классы сопоставления, но это далеко не идеально, поскольку мне пришлось бы написать 3 класса для каждого объекта POCO (клиентский класс, серверный класс DTO, сопоставитель).

Есть еще предложения?

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы