Мне нужно отделить ViewModel в моем проекте MVC от моих бизнес-моделей (уровень доступа к данным), который находится в отдельной библиотеке.
Предположим, у меня есть классы уровня доступа к базе данных в отдельной библиотеке.Наш основной проект (MVC) ничего не знает об этих классах, и они общаются друг с другом через интерфейс.Достаточно просто использовать IOC и разрешить внедрение зависимостей с помощью Ninject или чего-то еще, верно?
Теперь DataAccessLayer содержит класс с именем Car со свойствами Engine и Wheel.В моем проекте MVC (который ничего не знает о DataAccessLayer и его классах) мне нужно использовать некоторые объекты Car.Итак, у меня есть другой класс Car (это просто чистая ViewModel), и он имеет те же свойства - Engine и Wheel (конечно, в реальном приложении будут некоторые различия между моделью и viewmodel, для простоты давайте проигнорируем это)
Интерфейс IDataAccessLayer имеет метод IEnumerable GetAllCars (), который возвращает список объектов DataAccessLayer.Car.
Теперь мне нужно создать коллекцию MVCProject.Car, перебрать IEnumerable, возвращаемый GetAllCars (), на каждой итерации мне нужно создать новый объект MVCProject.Car, заполнить свойства Engine и Wheel и, наконец, добавить этот объект вКоллекция.
Итак: каждый раз мне приходится создавать почти одинаковые структуры и как-то управлять ими в разных местах.
Вот в чем проблема, понимаете?Или это не так?Я чувствую, что это превратится в большой беспорядок, если я не изменю это.Не повторяйте принципиальное нарушение как оно есть.Подскажите пожалуйста как правильно сделать.Используя я не знаю прокси или прототипы или, может быть, какой-то другой шаблон дизайна, который я в любом случае сосу.Или какой-то инструмент, такой как Ninject (который я знаю только как использовать в качестве контейнера IOC) или Automapper или что-то еще, что я, вероятно, высосу даже больше, чем шаблоны проектирования.