我正在使用自动映射器将我的DTO映射到视图模型,我的一些视图模型依赖于服务。
我找到了几种使用这些依赖项构建目标对象的方法,但我想知道是否可以只使用全局对象解析器(在我的例子中为 UnityContainer)?
我目前的解决方案是这样的:
config.CreateMap<SurveyDTO, SurveyViewModel>()
.ConstructUsing(x => _ObjectResovler.Resolve<SurveyViewModel>())
或者
config.CreateMap<SurveyDTO, SurveyViewModel>()
.ConstructUsingServiceLocator()
但这意味着我必须在每个映射中包含这样的行。有没有办法只对所有映射使用解析程序而不在配置中指定它?
我通过使用解决了它
config.ForAllMaps((map, opts) => opts
.ConstructUsing(x => _ObjectResovler.Resolve(map.DestinationType)));
对于服务定位器替代方案,您可以使用:
config.ForAllMaps((map, opts) => opts.ConstructUsingServiceLocator());