非静态 AutoMapper 和 ASP.NET MVC

Non-static AutoMapper and ASP.NET MVC

类似这个问题: Where to place AutoMapper.CreateMaps?

建议放置非静态 AutoMapper 初始化的位置在哪里?

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

为了让控制器可以访问地图变量,推荐的存储位置在哪里?

提前致谢。

一个好的方法是使用依赖注入并将映射器注入到需要访问它的组件上。 AutoMapper 的这种新方法也非常适合单元测试,因为您可以模拟接口。

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

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

GetConfiguredMapper return 通过调用 MapperConfiguration 的 CreateMapper 方法得到一个 IMapper。

然后您可以让 AutoFaq 完成所有接线和构造函数注入。

如果您真的想保留旧方法,您可以始终在应用程序中将 IMapper 包装在静态 class 中。

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