ResolveUsing
IValueResolverを使用するオーバーロードを無視し、次の2つのメソッドのみを確認します。
void ResolveUsing(Func<TSource, object> resolver);
void MapFrom<TMember>(Expression<Func<TSource, TMember>> sourceMember);
これら2つの主な違いは、MapFromがをとるのに対し、をとるということResolveUsing
です。Func<TSource, object>
Expression<Func<TSource, TMember>>
ただし、ラムダ式でこれらのメソッドの1つを実際に使用するクライアントコードでは、これらは交換可能であるように見えます。
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));
では、最終的に上記の2つの選択肢の違いは何ですか?一方はもう一方よりも速いですか?一方が他方よりも良い選択であり、もしそうなら、いつ/なぜですか?