Ignorando le ResolveUsing
overload che accettano un IValueResolver, e guardando solo questi 2 metodi:AutoMapper: qual è la differenza tra MapFrom e ResolveUsing?
void ResolveUsing(Func<TSource, object> resolver);
void MapFrom<TMember>(Expression<Func<TSource, TMember>> sourceMember);
La principale differenza tra questi 2 sembra essere che ResolveUsing
prende un Func<TSource, object>
, mentre MapFrom prende un Expression<Func<TSource, TMember>>
.
Tuttavia nel codice client che in realtà utilizza uno di questi metodi con un'espressione lambda, che sembrano essere intercambiabili:
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));
Quindi quello che alla fine è la differenza tra i suddetti 2 scelte? È uno più veloce dell'altro? È una scelta migliore rispetto all'altra e se sì, quando/perché?
Questa domanda mi ha semplicemente risolto un altro problema. –