Нестатический AutoMapper и ASP.NET MVC

Аналогично этому вопросу: где разместить AutoMapper.CreateMaps?

Где рекомендовано место для нестатической инициализации AutoMapper?

var map = new MapperConfiguration( cfg => ... ).CreateMapper();

Где рекомендовано место для хранения переменной карты, чтобы она была доступна из контроллеров?

Заранее спасибо.

1 ответ

Решение

Хорошим подходом к этому является использование внедрения зависимостей и внедрения картографа в ваши компоненты, которым необходим доступ к нему. Этот новый подход к AutoMapper также отлично подходит для модульного тестирования, так как вы можете просто издеваться над интерфейсами.

В нашем случае мы используем AutoFaq в качестве контейнера IoC и настраиваем AutoMapper следующим образом:

builder.RegisterInstance(AutoMapperConfig.GetConfiguredMapper()).As<IMapper>();

GetConfiguredMapper возвращает IMapper, вызывая метод CreateMapper в MapperConfiguration.

Затем вы можете позволить AutoFaq делать все соединения и конструктор.

Если вы действительно хотите сохранить старый подход, вы всегда можете обернуть IMapper в статический класс в вашем приложении.

Я определенно предпочитаю новую версию, так как она очень просто делает насмешку и тестирует наш код.

Другие вопросы по тегам