我是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/