AutoMapper:ForMember 和 ForSourceMember 有什么区别?
AutoMapper: What is the Difference Between ForMember and ForSourceMember?
我是 AutoMapper 的新手,所以这可能是初学者的问题。我已经搜索过,但还没有看到这个讨论。创建地图时,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
是一种需要名为 destinationMember
的 Expression<Func<RoleDto>>
参数的方法,而 ForSourceMember
需要名为 [=16] 的 Expression<Func<Role>>
参数=].所以
ForMember
配置目标类型的成员。
ForSourceMember
配置源类型的成员。
在您的例子中,源类型和目标类型都有成员 UserId
,因此调用 看起来 相同,但实际上并非如此。他们应该做同样的事情,但有趣的是ForSourceMember
似乎对忽略成员没有任何作用。也许这是一个错误。
我是 AutoMapper 的新手,所以这可能是初学者的问题。我已经搜索过,但还没有看到这个讨论。创建地图时,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
是一种需要名为 destinationMember
的 Expression<Func<RoleDto>>
参数的方法,而 ForSourceMember
需要名为 [=16] 的 Expression<Func<Role>>
参数=].所以
ForMember
配置目标类型的成员。ForSourceMember
配置源类型的成员。
在您的例子中,源类型和目标类型都有成员 UserId
,因此调用 看起来 相同,但实际上并非如此。他们应该做同样的事情,但有趣的是ForSourceMember
似乎对忽略成员没有任何作用。也许这是一个错误。