Привет всем.
Гложат меня сомнения по одному вопросу.
Есть ViewModel и есть DomainModel. И в сервисах есть процедуры маппинга одного в другое, состоящие в основном из кода вида ViewModel.PropN = DomainModel.PropN
Стоит ли использовать фрэймворки типа Automapper, или в данном случае оверкодинг оправдан?
Если все оставить как есть, то при изменении названия какого-то свойства, получу ошибку на этапе билда, но остается много кода в сервисах.
Если воспользоваться фрэймворком, то придется мапинг покрыть тестом и не факт, что в сложные случаи получится обработать автоматически, но зато сервис станет "чище".
Оправдано использование собственного решения или нет решать только вам. Весь смысл в использовании готовых решений в том, что они упрощают вам жизнь. Если с вашим решением вам легко поддерживать, модифицировать код, тогда зачем добавлять что-то новое?
Я обычно делаю так - если у меня немного небольших DTO-моделей в которые надо мапить доменные модели то мне проще сделать это руками чем использовать автомаппер.
Вобщем сперва смотрите удобно ли вам, затем уже как оно там по феншую должно быть.
Если у вас ViewModel является частью DomainModel и названия свойств 1:1 совпадают, то автомаппер легко маппит без дополнительного кода. Если вам нужно сделать декомпозицию свойств или "уплощение" (flattening)модели, то тоже имеет смысл юзать автомаппер. Но если мапперу для создания объекта нужно обратится к другим объектам, то с автомаппером возникли проблемы, т.к. я не нашел как написать кастомный конвертер, в конструктор которого можно передать дополнительные объекты.