Я пишу крупномасштабное приложение Silverlight. В настоящее время я пишу элементы поиска данных.
Я сейчас воспользовался и выдаю.
У меня есть общий проект, содержащий объекты, на этот проект ссылаются как пользовательский интерфейс, так и служба WCF. Для привязки пользовательскому интерфейсу требуется INotifyPropertyChanged.
Теперь WCF должен использовать те же объекты, но я получаю сообщение об ошибке компилятора:
"Тип System.ComponentModel.INotifyPropertyChanged определен в сборке, на которую нет ссылки".
РЕДАКТИРОВАТЬ: ошибка в службе WCF.
Мне нужен один объектный класс, как мне решить эту проблему?
http://www.pcbuyersguide.co.za/picture.php?albumid=19&pictureid=1708
Спасибо -Oliver
Ответ 1 · рейтинг 3 · Sky Sanders
Если вы планируете использовать один и тот же исходный код для своих Entities (домена) как для проекта clr, так и для проекта silverlight, вам нужно будет использовать 2 проекта, поскольку сборки Silverlight не совпадают со сборками CLR.
Добавьте в решение проект библиотеки классов Silverlight, имя не имеет значения, но обычно я использую просто XXXX_SL.
Теперь вы "Добавить существующий элемент" для всех исходных файлов из проекта clr, но заметили раскрывающийся список на кнопке "Открыть" или "Выбрать"? щелкните по нему и "добавить как ссылку" или что там написано.
Теперь вы используете один и тот же источник для обоих проектов, и ваше решение будет скомпилировано.
По пути могут быть внесены некоторые незначительные изменения, но они направят вас на верный путь.
Вот некоторые справочные материалы
Ответ 3 · Oliver
Я нашел здесь метод , который позволяет создавать классы CLR на на стороне службы, а затем можно использовать сгенерированные объекты из ссылки на службу, поскольку классы создаются с помощью INotifyPropertyChanged и ObservableCollection.
Это решает непосредственную проблему границы клиент / сервер, но вписывается в мое решение, потому что для использования сгенерированных объектов вам нужна ссылка на службу. Но у меня есть ProxyClass, который общается с WCF, поэтому я не вижу способа передать эти типы объектов обратно в ViewModel.
Я вижу, что некоторые люди написали классы сопоставления, но это далеко не идеально, поскольку мне пришлось бы написать 3 класса для каждого объекта POCO (клиентский класс, серверный класс DTO, сопоставитель).
Есть еще предложения?