自动映射全局目标实例化器

时间:2017-10-19 15:11:35

标签: c# automapper

我正在使用automapper将我的DTO映射到Viewmodels,我的一些视图模型依赖于服务。

我找到了几种使用这些依赖项构造目标对象的方法,但我想知道是否可以只使用全局对象解析器(在我的情况下是UnityContainer)?

我目前的解决方案是:

config.CreateMap<SurveyDTO, SurveyViewModel>()
                .ConstructUsing(x => _ObjectResovler.Resolve<SurveyViewModel>())

或者

config.CreateMap<SurveyDTO, SurveyViewModel>()
                .ConstructUsingServiceLocator()

但这意味着我必须在每个映射中包含这样的一行。 有没有办法只将解析器用于所有映射而不在配置中指定它?

1 个答案:

答案 0 :(得分:1)

我使用

解决了这个问题
config.ForAllMaps((map, opts) => opts
          .ConstructUsing(x => _ObjectResovler.Resolve(map.DestinationType)));

对于您可以使用的servicelocator替代方案:

config.ForAllMaps((map, opts) => opts.ConstructUsingServiceLocator());