Próbuję znaleźć właściwy sposób konfiguracji AutoMappera w pliku Startup.cs mojej aplikacji, a następnie użyć go w całej mojej aplikacji.Konfigurowanie AutoMapper 4.2 z wbudowanym IoC w ASP.NET Core 1.0 MVC6
Próbuję użyć this documentation, który nieco wyjaśnia, jak wciąż dać AutoMapperowi wrażenie statyczne bez starego statycznego API. W przykładzie zastosowano StructureMap.
Chciałbym wiedzieć, jak mogę zrobić coś podobnego, ale w aplikacji Core 1.0 za pomocą wbudowanego kontenera usług.
Zakładam, że w funkcji Konfiguracji skonfigurowałbym AutoMapper, a następnie w funkcji ConfigureServices dodałbym go jako przejściowy.
Zakładam, że najczystszym i najodpowiedniejszym sposobem na to jest zastrzyk zależności. Oto moja obecna próba, ale to nie działa:
Startup.cs
public IMapper Mapper { get; set; }
private MapperConfiguration MapperConfiguration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMapper, Mapper>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
MapperConfiguration MapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Product, ProductViewModel>().ReverseMap();
});
Mapper = MapperConfiguration.CreateMapper();
}
W moim kontrolera:
private IMapper _mapper { get; set; }
// Constructor
public ProductsController(IMapper mapper)
{
_mapper = mapper;
}
public IActionResult Create(ProductViewModel vm)
{
Product product = _mapper.Map<ProductViewModel, Product>(vm);
}
To po prostu nie działa w ogóle .. Muszę pominąć jakiś krok lub zrobić coś złego.
nie mam pełną odpowiedź na to (zmaga się z nią sam!), Ale w swojej AddTransient, drugi generic param jest typu * * od Mapper zamiast instancji Mappera utworzonej za pomocą CreateMapper. Zgaduję, że będzie to coś podobnego do usług. Zamiast tego dodam. – DavidGouge