Маппинг объектов. Как лучше?

Привет всем.
Гложат меня сомнения по одному вопросу.
Есть ViewModel и есть DomainModel. И в сервисах есть процедуры маппинга одного в другое, состоящие в основном из кода вида ViewModel.PropN = DomainModel.PropN
Стоит ли использовать фрэймворки типа Automapper, или в данном случае оверкодинг оправдан?

Если все оставить как есть, то при изменении названия какого-то свойства, получу ошибку на этапе билда, но остается много кода в сервисах.

Если воспользоваться фрэймворком, то придется мапинг покрыть тестом и не факт, что в сложные случаи получится обработать автоматически, но зато сервис станет "чище".

Выслушаю доводы:)
  • Вопрос задан
  • 3011 просмотров
Решения вопроса 1
trerums
@trerums
Оправдано использование собственного решения или нет решать только вам. Весь смысл в использовании готовых решений в том, что они упрощают вам жизнь. Если с вашим решением вам легко поддерживать, модифицировать код, тогда зачем добавлять что-то новое?
Я обычно делаю так - если у меня немного небольших DTO-моделей в которые надо мапить доменные модели то мне проще сделать это руками чем использовать автомаппер.

Вобщем сперва смотрите удобно ли вам, затем уже как оно там по феншую должно быть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@asdz
Если у вас ViewModel является частью DomainModel и названия свойств 1:1 совпадают, то автомаппер легко маппит без дополнительного кода. Если вам нужно сделать декомпозицию свойств или "уплощение" (flattening)модели, то тоже имеет смысл юзать автомаппер. Но если мапперу для создания объекта нужно обратится к другим объектам, то с автомаппером возникли проблемы, т.к. я не нашел как написать кастомный конвертер, в конструктор которого можно передать дополнительные объекты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы