相关疑难解决方法(0)

AutoMapper:MapFrom和ResolveUsing有什么区别?

忽略ResolveUsing采用IValueResolver 的重载,并仅查看这两种方法:

void ResolveUsing(Func<TSource, object> resolver);
void MapFrom<TMember>(Expression<Func<TSource, TMember>> sourceMember);
Run Code Online (Sandbox Code Playgroud)

这两者之间的主要区别似乎是ResolveUsinga Func<TSource, object>,而MapFrom需要a Expression<Func<TSource, TMember>>.

但是,在实际上使用lambda表达式的这些方法之一的客户端代码中,它们似乎是可互换的:

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));
Run Code Online (Sandbox Code Playgroud)

那么上述两种选择之间最终的区别是什么呢?一个比另一个快吗?一个是比另一个更好的选择,如果是,何时/为什么?

automapper automapper-2

51
推荐指数
3
解决办法
3万
查看次数

标签 统计

automapper ×1

automapper-2 ×1