我是AutoMapper的新手,所以这可能是一个初学者的问题。我已经搜索过,但还没有看到这个问题。创建地图时,ForMember和ForSourceMember方法之间的区别是什么:
Mapper.CreateMap<Role, RoleDto>()
.ForMember(x => x.Users, opt => opt.Ignore())
.ForSourceMember(x => x.Users, opt => opt.Ignore());
我维护其他人编写的代码。在某些地方,我看到ForMember,在其他ForSourceMember,以及如上所示,在一个地方。
两者之间有什么区别?
提前感谢您的任何帮助。
答案 0 :(得分:8)
查看方法签名。在......
Mapper.CreateMap<Role, RoleDto>()
.ForMember(x => x.Users, opt => opt.Ignore())
.ForSourceMember(x => x.Users, opt => opt.Ignore());
... ForMember
是一种需要名为Expression<Func<RoleDto>>
的{{1}}参数的方法,而destinationMember
需要一个名为ForSourceMember
的{{1}}参数。所以
Expression<Func<Role>>
配置目标类型的成员。sourceMember
配置源类型的成员。在您的情况下,源类型和目标类型都有成员ForMember
,因此调用看起来相同,但它们不是。他们应该做同样的事情,但有趣的是ForSourceMember
似乎对忽略成员没有任何影响。也许这是一个错误。