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

    10-08 20:37