AutoMapper全局字符串修剪配置下保留指定字段空格的方法
解决AutoMapper全局字符串修剪下保留特定字段空格的问题
嘿,我来帮你搞定这个问题!你已经全局配置了字符串自动修剪,现在要让两个特殊字段跳过这个规则,其实很简单——针对这两个字段单独配置映射规则,覆盖全局的默认行为就行。
AutoMapper的优先级是:成员级别的配置 > 全局类型级别的配置。所以只要你在数据模型到实体的映射里,明确指定这两个字段直接映射原始值,就不会触发全局的修剪转换器了。
举个具体的例子,假设你的数据模型叫DataModel,实体叫TargetEntity,需要保留空格的字段是SpecialField1和SpecialField2,配置代码可以这么写:
// 保留你已有的全局字符串修剪配置 configuration.CreateMap<string, string>().ConvertUsing<StringToTrimmedStringConverter>(); // 针对特定实体的字段做覆盖配置 configuration.CreateMap<DataModel, TargetEntity>() // 对需要保留空格的字段,直接映射原始值,不使用全局修剪 .ForMember(dest => dest.SpecialField1, opt => opt.MapFrom(src => src.SpecialField1)) .ForMember(dest => dest.SpecialField2, opt => opt.MapFrom(src => src.SpecialField2));
这样一来,除了这两个字段,其他字符串字段都会正常走全局的修剪逻辑,而这两个字段会原封不动地保留空格。
如果你的场景更复杂,比如需要对这两个字段做其他自定义处理但就是不修剪,也可以用ResolveUsing来明确返回原始值:
.ForMember(dest => dest.SpecialField1, opt => opt.ResolveUsing(src => src.SpecialField1))
效果和MapFrom是一样的,都是绕过全局的类型转换器。
另外要注意,AutoMapper 3.3.1版本完全支持这些配置方式,不用担心版本兼容问题~
内容的提问来源于stack exchange,提问作者Glazius
相关产品推荐
相关产品推荐

