gpt4 book ai didi

AutoMapper:MapFrom 和 ResolveUsing 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 06:02:12 26 4
gpt4 key购买 nike

忽略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>> .

但是,在实际使用这些方法之一和 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));

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

最佳答案

过去我有一个 long email exchange on the mailing list与 Automapper 的作者一起。 MapFrom 将通过表达式一路进行 null 检查:

So you can do opt => opt.MapFrom(src =>
src.SomeProp.Way.Down.Here.Somewhere)
and each level will get checked for nulls (as it already does for flattening).

关于AutoMapper:MapFrom 和 ResolveUsing 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com