Игнорирование перегрузок ResolveUsing
, которые принимают IValueResolver, и глядя только на эти 2 метода:
void ResolveUsing(Func<TSource, object> resolver);
void MapFrom<TMember>(Expression<Func<TSource, TMember>> sourceMember);
Основное различие между этими двумя кажется, что ResolveUsing
принимает значение Func<TSource, object>
, тогда как MapFrom принимает Expression<Func<TSource, TMember>>
.
Однако в клиентском коде, который фактически использует один из этих методов с лямбда-выражением, они кажутся взаимозаменяемыми:
Mapper.CreateMap<SourceType, DestType>() // uses ResolveUsing
.ForMember(d => d.DestPropX, o => o.ResolveUsing(s => s.SourcePropY));
Mapper.CreateMap<SourceType, DestType>() // uses MapFrom
.ForMember(d => d.DestPropX, o => o.MapFrom(s => s.SourcePropY));
Итак, в чем же разница между двумя вышеуказанными вариантами? Быстрее, чем другой? Является ли лучший выбор, чем другой, и если да, то когда/почему?