Я перехожу на newer configuration из AutoMapper. Я смотрел примеры на AutoMapper GitHub Wiki и немного запутался в том, как завершить настройку. Wiki говорит, что в одном месте вы можете хранить экземпляр MapperConfiguration в своем D.I. контейнер (или сохранить его статически), но в следующем абзаце говорится, что вы можете хранить экземпляр Mapper статически. В двух словах, я не уверен, что я должен делатьПри переносе на AutoMapper 4.2/5.0 следует ли хранить экземпляр IMapper или экземпляр MapperConfiguration в контейнере для инъекций зависимостей?
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Foo, Bar>().ReverseMap(); //creates a bi-directional mapping between Foo & Bar
cfg.AddProfile<FooProfile>(); //suppose FooProfile creates mappings...
});
затем с использованием D.I. контейнер, такие как Unity, чтобы сохранить этот экземпляр как таковые ...
container.RegisterInstance<MapperConfiguration>(config);
Где я мог бы впоследствии использовать этот экземпляр для выполнения отображения ...
public void CreateMapping(MapperConfiguration config, Bar bar)
{
Foo foo = config.CreateMapper().Map(bar);
//do stuff with foo
}
или, я должен хранить IMapper экземпляр в MapperConfiguration делает
container.RegisterInstance<IMapper>(config.CreateMapper());
, который имел бы использование следующим образом
public void CreateMapping(IMapper mapper, Bar bar)
{
Foo foo = mapper.Map(bar);
//do stuff with foo
}
Все, что я буду делать в своем приложении после того, как начальная конфигурация вызывает метод Map. Мне не нужно будет изменять конфигурацию. Должен ли я хранить экземпляр IMapper или экземпляр MapperConfiguration в контейнере для инъекций зависимостей?
Обновление: Я закончил с регистрацией IMapper с моим D.I. контейнер. В моем случае, Единство.
Какая версия вы используете? Это зависит от версии 4 - до версии 5, она изменилась. Есть некоторые устаревшие вещи, и есть несколько новых рекомендаций. – alltej
@alltej Вы могли бы указать, что это за изменения? Я пытаюсь перейти на версию 5. – Shago