我試圖找出我的應用程序的Startup.cs文件來配置AutoMapper,然後用它在我的應用程序的正確方法。配置AutoMapper 4.2,內置在國際奧委會ASP.NET 1.0的核心MVC6
我想使用this documentation這在一定程度解釋瞭如何仍給AutoMapper靜態的感覺沒有老靜態API。該示例使用StructureMap。
我想知道我可以做同樣的事情,但在使用內置的服務容器中的核心應用程序1.0。
我假設在配置功能我將配置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);
}
它根本無法所有工作..我必須錯過一些步驟或做錯事。
我沒有這樣做的完整的答案(它掙扎嘍!),但在你的AddTransient,第二通用參數是Mapper的*類型*而不是使用CreateMapper創建的Mapper實例。我猜這將是沿着services.AddInstance的行。 – DavidGouge