Automapper ResolveUsing或MapFrom

时间:2014-09-02 17:11:51

标签: automapper

我将映射定义定义为

Mapper.CreateMap<Calculator, CalculatorViewModel>()
  .ForMember(dest => dest.TypeIndicator, src => src.ResolveUsing(new TypeIndicatorResolver()));

我应该使用 ResolveUsing 还是MapFrom(src => SomePrivateMethod())

ResolveUsing和MapFrom在复杂映射方面有什么区别。

Resolver或Private方法将转到数据库并获取值。

1 个答案:

答案 0 :(得分:31)

MapFrom使用表达式,而ResolveUsing使用Func。 MapFrom只允许重定向属性:

ForMember(d => d.Foo, opt => opt.MapFrom(src => src.Bar.Baz.Foo))

ResolveUsing可以是任何东西

ForMember(d => d.Foo, opt => opt.ResolveUsing(src => HitDatabaseWithStuff(src));

当需要在多个成员之间共享解析逻辑时,或者如果我想让服务定位器实例化解析器时,我会使用Resolver类。否则,私有方法就可以了。