非静态AutoMapper和ASP.NET MVC

时间:2016-05-19 09:36:46

标签: c# asp.net asp.net-mvc automapper automapper-4

与此问题类似: Where to place AutoMapper.CreateMaps?

推荐非静态AutoMapper初始化的推荐位置在哪里?

var map = new MapperConfiguration( cfg => ... ).CreateMapper();

存储地图变量的建议位置在哪里才能从控制器访问?

提前致谢。

1 个答案:

答案 0 :(得分:1)

一个很好的方法是使用依赖注入并在需要访问它的组件上注入映射器。这种AutoMapper的新方法对于单元测试也很有用,因为你可以模拟接口。

在我们的例子中,我们使用AutoFaq作为IoC容器,并将AutoMapper设置为:

builder.RegisterInstance(AutoMapperConfig.GetConfiguredMapper()).As<IMapper>();

GetConfiguredMapper通过调用MapperConfiguration的CreateMapper方法返回IMapper。

然后,您可以让AutoFaq执行所有连线和构造函数注入。

如果你真的想保留旧方法,你可以随时将IMapper包装在应用程序的静态类中。

我绝对更喜欢新版本,因为它可以非常简单地模拟和单元测试我们的代码。