Архитектура обслуживания клиентов - PullRequest
2 голосов
/ 03 декабря 2010

У меня есть решение со следующими проектами

  • GUI (содержит представления)
  • ViewModels (содержит все модели представлений)
  • Служба (служба WCF "TheService", которая доставляет удаленные данные)

GUI знает ViewModels и сервис. Сервис знает ViewModels.

Служба имеет метод, который возвращает ObservableCollection из PersonViewModels:

public ObservableCollection<ViewModels.PersonViewModel> LoadPersons() {...}

В GUI, когда я пытаюсь загрузить людей, я хотел бы сделать это следующим образом:

ObservableCollection<ViewModels.PersonViewModel> persons = service.LoadPersons();

Проблема в том, что мой компилятор говорит, что я должен привести

Service.TheService.ViewModels.PersonViewModel

до

ViewModels.PersonViewModel

Почему это? Я только хотел бы иметь одно место, где я определяю свои модели представления. Кажется, у меня архитектурная проблема.

1 Ответ

2 голосов
/ 03 декабря 2010

Я не знаю, правильно ли я понимаю вашу проблему, но кажется, что вы реализовали классы, представляющие одну и ту же вещь в двух разных местах.Класс PersonViewModel был реализован как в слоях Service, так и в слоях ViewModels.

Если реализация из ViewModels не добавляет каких-либо дополнительных функций, вы должны удалить ее и использовать только реализацию из службы WCF.

Если реализация из ViewModels действительно добавляет дополнительные функциональные возможности, необходимые в вашем приложении, то вам нужно создать метод преобразования из Service.PersonViewModel в ViewModel.PersonViewModel, который вы должны использовать для приведенияиз вашего примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...