Проблема совместного использования модели домена между WCF и Silverlight Project - PullRequest
2 голосов
/ 17 февраля 2010

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

Теперь я выполнил запрос и выполнил.

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

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

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

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

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

диаграмма http://www.pcbuyersguide.co.za/picture.php?albumid=19&pictureid=1708

Спасибо, Оливер

Ответы [ 3 ]

3 голосов
/ 17 февраля 2010

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

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

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

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

На этом пути могут быть небольшие изменения, но это приведет вас на правильный путь.

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

0 голосов
/ 25 февраля 2010

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

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

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

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

0 голосов
/ 17 февраля 2010

Вы добавили ссылку в проекте компиляции в System.ComponentModel

...