我是 AutoMapper 的新手,所以这可能是初学者的问题。我搜索过,但没有看到这个讨论。创建 map 时,ForMember 和 ForSourceMember 方法有什么区别:
Mapper.CreateMap<Role, RoleDto>()
.ForMember(x => x.Users, opt => opt.Ignore())
.ForSourceMember(x => x.Users, opt => opt.Ignore());
我正在维护其他人编写的代码。在某些地方,我看到 ForMember,在其他地方看到 ForSourceMember,如上所示,两者都在一处。
两者有什么区别?
预先感谢您的帮助。
最佳答案
查看方法签名。在...
Mapper.CreateMap<Role, RoleDto>()
.ForMember(x => x.Users, opt => opt.Ignore())
.ForSourceMember(x => x.Users, opt => opt.Ignore());
... ForMember
是一种期望 Expression<Func<RoleDto>>
的方法名为 destinationMember
的参数,而ForSourceMember
预计 Expression<Func<Role>>
名为 sourceMember
的参数。所以
-
ForMember
配置目标类型的成员。 -
ForSourceMember
配置源类型的成员。
在您的情况下,源类型和目标类型都有成员 UserId
,因此调用看起来相同,但实际上并非如此。他们应该做同样的事情,但有趣的是ForSourceMember
似乎对忽略成员没有任何影响。也许这是一个错误。
关于AutoMapper:ForMember 和 ForSourceMember 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660442/