【发布时间】:2016-05-04 21:12:02
【问题描述】:
我计划将 Automapper 与 ASP.NET MVC 解决方案和 Unity DI 一起使用。 automapper 上发布的关于如何使用的视频已经很老了,并且没有显示映射器如何与依赖注入一起使用。 stackoverflow 上的大多数示例也使用 Mapper.CreateMap() 方法,该方法现已弃用。
自动映射器指南说
一旦你有了你的类型,你就可以为这两种类型创建一个地图,使用 MapperConfiguration 实例和 CreateMap。你只需要一个 MapperConfiguration 实例通常每个 AppDomain 并且应该是 在启动期间实例化。
var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>());
所以我假设上面的代码行将进入应用程序启动,比如 global.asax
要执行映射,请使用 CreateMapper 方法创建 IMapper。
var mapper = config.CreateMapper();
OrderDto dto = mapper.Map<OrderDto>(order);
以上行将进入控制器。但是我不明白这个config 变量来自哪里?如何在控制器中注入 IMapper?
【问题讨论】:
-
您应该将容器配置为在
IMapper和映射器实例之间进行映射。然后你应该从控制器声明对IMapper的依赖(通过在构造函数中接受IMapper)。 -
有什么例子吗?那么我需要映射的每个实体都会有“新的 MapperConfiguration()”吗?例子真的很有帮助
标签: asp.net-mvc dependency-injection inversion-of-control automapper