我正在尝试找出在应用程序的Startup.cs文件中正确配置AutoMapper并在整个应用程序中使用它的方法。
我正在尝试使用这份文档,其中有些解释如何仍然使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);
}
它根本就不起作用...我一定漏掉了某些步骤或者做错了什么。