2016-05-19 3 views
1

Аналогична этот вопрос: Where to place AutoMapper.CreateMaps?Нестатическое AutoMapper и ASP.NET MVC

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

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

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

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

ответ

1

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

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

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

GetConfiguredMapper возвращают IMapper путем вызова метода CreateMapper в MapperConfiguration.

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

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

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

+0

Спасибо, DI с Autofac - очень хорошее решение. – zpul

+0

Рад помочь. Мы также занимаемся этим рефакторингом, поэтому идеи все еще довольно свежие. Мое единственное беспокойство - иметь только один экземпляр картографа для всего приложения, мне любопытно посмотреть, как он развивается. – avdomingos

Смежные вопросы