与这个问题类似: 在哪里放置 AutoMapper.CreateMaps?
放置非静态 AutoMapper 初始化的推荐位置在哪里?
var map = new MapperConfiguration( cfg => ... ).CreateMapper();
存储地图变量的推荐位置在哪里,以便控制器可以访问它?
提前致谢。
与这个问题类似: 在哪里放置 AutoMapper.CreateMaps?
放置非静态 AutoMapper 初始化的推荐位置在哪里?
var map = new MapperConfiguration( cfg => ... ).CreateMapper();
存储地图变量的推荐位置在哪里,以便控制器可以访问它?
提前致谢。
一个好的方法是使用依赖注入并将映射器注入到需要访问它的组件上。这种 AutoMapper 的新方法也非常适合单元测试,因为您可以模拟接口。
在我们的例子中,我们使用 AutoFaq 作为 IoC 容器,并像这样设置 AutoMapper:
builder.RegisterInstance(AutoMapperConfig.GetConfiguredMapper()).As<IMapper>();
GetConfiguredMapper 通过调用 MapperConfiguration 的 CreateMapper 方法返回一个 IMapper。
然后,您可以让 AutoFaq 完成所有连线和构造函数注入。
如果您真的想保留旧方法,您始终可以将 IMapper 包装在应用程序中的静态类中。
我绝对更喜欢新版本,因为它使模拟和单元测试我们的代码变得非常简单。