Automapper ResolveUsing或MapFrom

Ang*_*gad 26 automapper

我将映射定义定义为

Mapper.CreateMap<Calculator, CalculatorViewModel>()
  .ForMember(dest => dest.TypeIndicator, src => src.ResolveUsing(new TypeIndicatorResolver()));
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jim*_*ard 36

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

ForMember(d => d.Foo, opt => opt.MapFrom(src => src.Bar.Baz.Foo))
Run Code Online (Sandbox Code Playgroud)

ResolveUsing可以是任何东西

ForMember(d => d.Foo, opt => opt.ResolveUsing(src => HitDatabaseWithStuff(src));
Run Code Online (Sandbox Code Playgroud)

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

  • 从 automapper 8.0 开始,ResovleUsing 被 MapFrom 取代。[升级指南](http://docs.automapper.org/en/stable/8.0-Upgrade-Guide.html#resolveusing) (3认同)
  • `ForMember(d => d.Foo,opt => opt.MapFrom(src => new Bla {Meh = src.Bar.Baz.Foo}))`似乎工作得很好......所以这不仅仅是重定向或属性,是吗? (2认同)