Я пытаюсь выяснить, как правильно настроить AutoMapper в моем файле Startup.cs приложения, а затем использовать его во всем приложении.
Я пытаюсь использовать эту документацию, которая несколько объясняет, как все еще дать AutoMapper статическое ощущение без старого статического API. В этом примере используется StructureMap.
Я хотел бы знать, как я могу сделать что-то подобное, но в приложении Core 1.0, используя встроенный контейнер сервисов.
Я предполагаю, что в функции Configure я бы сконфигурировал AutoMapper, а затем в функции ConfigureServices я бы добавил его как переходный процесс.
В конечном итоге я предполагаю, что самый чистый и правильный способ сделать это - использовать инъекцию зависимостей. Вот моя текущая попытка, но она не работает:
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();
}
В моем контроллере
private IMapper _mapper { get; set; }
// Constructor
public ProductsController(IMapper mapper)
{
_mapper = mapper;
}
public IActionResult Create(ProductViewModel vm)
{
Product product = _mapper.Map<ProductViewModel, Product>(vm);
}
Он просто не работает вообще... Мне нужно пропустить какой-то шаг или сделать что-то не так.