Automapper ResolveUsing или MapFrom

У меня есть определение отображения, определенное как

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

Должен ли я использовать ResolveUsing или MapFrom(src=> SomePrivateMethod())?

В чем разница между ResolveUsing и MapFrom, когда речь идет о сложном отображении.

Метод Resolver или Private перейдет в базу данных и получит значение.

Ответы

Ответ 1

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, когда логика разрешения должна быть разделена между несколькими участниками или если я хочу, чтобы преобразователь создавался локатором службы. В противном случае частный метод в порядке.