Automapper 12.x中Guid转String映射验证失败,如何解决?
解决AutoMapper 12.x中Guid转String映射验证失败的问题
AutoMapper 12.x对MemberList.Source的验证逻辑做了严格升级,你之前用MapFrom结合ToString()实现Guid到String的转换,会被新版本判定为源的ClientId成员未正确映射(因为源类型是Guid,目标类型是String,类型不匹配),从而导致验证失败。
可以通过以下两种方式修改配置:
方式一:针对单个映射使用ConvertUsing替换MapFrom
ConvertUsing专门用于处理跨类型的转换场景,能让AutoMapper明确识别到该成员的映射逻辑是合法的:
CreateMap<CreateClientRequest, Client>(MemberList.Source) .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.ClientId, opt => opt.ConvertUsing(src => src.ClientId.ToString()));
方式二:全局配置Guid到String的转换器
如果项目中有多处Guid转String的需求,推荐全局注册类型转换器,无需在每个映射中重复编写逻辑:
// 全局注册Guid到String的转换规则 CreateMap<Guid, string>().ConvertUsing(guid => guid.ToString()); // 映射配置简化为 CreateMap<CreateClientRequest, Client>(MemberList.Source) .ForMember(dest => dest.Id, opt => opt.Ignore());
两种方式都能让_configuration.AssertConfigurationIsValid()验证通过,同时保证Guid到String的转换逻辑正常生效。
内容的提问来源于stack exchange,提问作者pampua84
相关产品推荐
相关产品推荐

