Próbuję przeprowadzić migrację ze starego statycznego interfejsu API AutoMapper do nowego sposobu wykonywania czynności zgodnie z this resource.Konfigurowanie programu AutoMapper w wersji 4.2 przy uruchomieniu aplikacji bez interfejsu statycznego API
Jednak jestem nieco zdezorientowany, jak powinienem skonfigurować AutoMapper w pliku takim jak Startup.cs/Global.asax.
Stary sposób zrobić coś takiego było:
Mapper.Initialize(cfg => {
cfg.CreateMap<Source, Dest>();
});
Następnie wszędzie w całym kodzie I może po prostu wystarczy zrobić:
var dest = Mapper.Map<Source, Dest>(source);
Teraz z nową wersją wydaje się, że nie jest sposób na zainicjowanie AutoMappera przy uruchomieniu aplikacji, a następnie użycie go w kontrolerze. Jedynym sposobem, zorientowali się, jak to zrobić robi wszystko w sterowniku tak:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Source, Dest>();
});
IMapper mapper = config.CreateMapper();
var source = new Source();
var dest = mapper.Map<Source, Dest>(source);
Czy naprawdę muszę skonfigurować AutoMapper każdym razem używam go teraz w moich kontrolerów MVC lub gdziekolwiek indziej w moim podanie? Tak, dokumentacja pokazuje, jak skonfigurować ją w nowy sposób, ale po prostu ustawia ją na zmienną o nazwie config, która nie może obejść całej mojej aplikacji.
Znalazłem this documentation na utrzymaniu statycznego odczucia. Ale jestem trochę zdezorientowany co do MyApplication.Mapper i gdzie powinienem to zadeklarować. Wydaje się, że jest to własność globalna aplikacji.
Co powiesz na dodanie konstruktora statycznego do klasy AutoMapperConfig i wywołanie go w MapMappings? – costa
co się stanie, jeśli musisz wykonać więcej niż jedno mapowanie? musisz utworzyć więcej niż jedną publiczną statyczną MapperConfiguration MapperConfiguration; ? – Diego