Нестатический 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 в статический класс в вашем приложении.
Я определенно предпочитаю новую версию, так как она очень просто делает насмешку и тестирует наш код.