Просмотр моделей и внедрение зависимостей
Работая над настольным LOB-приложением с большим количеством операций CRUD, используяPRISM а такжеБиблиотека предприятияЯ заметил повторяющуюся картину, которая кажется раздражающей. Для каждой сущности модели предметной области (например, Contact) я сам оборачиваю ее моделью представления (например, ContactVM), затем я представляю новуюContactsVM
(обратите внимание на 's'), где последний класс принимает интерфейс репозитория, который используется для заполненияObservableCollection<ContactVM>
и для каждогоContact
сущность, которую я прочитал из хранилища, я обернуть его вContactVM
который я передаю сущности через конструктор вместе с другими службами корпоративной библиотеки, необходимыми моему ViewModel.
Проблема в том, что все мои конструкторы модели представления начали использовать этот шаблон следующим образом:
ViewModel(EntityToWrap e, DependencyFromEntLib, OtherDependencies ...)
Теперь это проблема, потому что большинству инструментов и библиотек требуется конструктор по умолчанию без параметров (например, некоторые коммерческие сетки данных нуждаются в этом для обеспечения поддержки фильтрации), плюс вы не можете использовать данные проектирования для визуализации объектов, потому что им также нужны конструкторы без параметров. и, наконец, вопрос: как правильно построить модели представлений и следует ли предоставлять услуги Entlib через конструкторы или черезServiceLocator ?