AutoMapper:ForMember 和 ForSourceMember 之间有什么区别?

标签 automapper

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

相关文章:

AutoMapper 和 "UseDestinationValue"

c# - Automapper 忽略嵌套对象的 ignore 属性

c# - 如何使用 AutoMapper 提供枚举到字符串的默认映射?

asp.net-core - 在 AfterMap 方法 (AutoMapper) 中异步设置 View 模型的属性

c# - AutoMapper 如何在获取抛出异常的属性时忽略异常?

c# - 使用 MVC3 中的存储库模式和 Entity Framework 将域模型转换为 ViewModel 并再次返回

c# - AutoMapper:将对象集合映射到字符串集合

c# - 字典 <string,string> 使用 Automapper 映射到一个对象

c# - 如何使用 AutoMapper 映射食谱与成分

architecture - 在 DDD + 分层架构中实现 Automapper 的位置