如何在AutoMapper中覆盖单个属性的映射配置?
解决AutoMapper属性名变更后的映射问题
当然有超简便的方法!AutoMapper专门提供了ForMember方法来单独覆盖特定属性的映射规则,完全不用重新配置所有属性,其他名字匹配的属性依然会自动映射。
你只需要在原有的CreateMap调用后面链式调用ForMember,明确指定目标属性和对应的源属性即可:
config.CreateMap<GetUsers_Result, Core.Models.User>() // 单独配置UserId的映射来源为UserExtensionId .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.UserExtensionId));
简单解释下这段代码:
dest => dest.UserId:指定目标对象(Core.Models.User)中需要自定义映射的属性opt => opt.MapFrom(src => src.UserExtensionId):告诉AutoMapper,这个目标属性的值要从源对象(GetUsers_Result)的UserExtensionId属性获取
这样修改后,除了UserId的映射规则被覆盖,其他属性只要名字和原来一致,AutoMapper还是会按照默认的约定进行映射,完美保留你原来的配置逻辑~
内容的提问来源于stack exchange,提问作者user9393635
相关产品推荐
相关产品推荐

