.NET Core中如何通过AutoMapper实现全局字符串首尾空白自动Trim
解决方案
全局字符串Trim配置
直接在AutoMapper服务注册时添加全局成员值变换器即可,该配置会对应用内所有映射操作的string类型成员自动生效,无需单独修改每个Profile:
Startup.cs 写法(.NET Core 3.1/.NET 5)
services.AddAutoMapper( cfg => cfg.AddMemberValueTransformer<string>(str => str == null ? null : str.Trim()), typeof(Startup) );
Program.cs 写法(.NET 6+)
builder.Services.AddAutoMapper( cfg => cfg.AddMemberValueTransformer<string>(str => str?.Trim()), typeof(Program) );
如果需要同时将全空白字符串转换为null,可以调整逻辑:
cfg.AddMemberValueTransformer<string>(str => string.IsNullOrWhiteSpace(str) ? null : str.Trim());
原有方案不生效的原因
- 自定义
string到string的CreateMap仅在显式调用mapper.Map<string>(源字符串)时生效,不会自动应用到其他类型映射中的string成员属性/字段上,因此看不到效果。 - 之前的ValueTransformer尝试未生效,是因为没有使用针对所有成员的全局变换器方法,
AddMemberValueTransformer会自动匹配所有目标类型为string的成员,无需绑定到特定映射规则。
内容的提问来源于stack exchange,提问作者Mauro Bilotti
相关产品推荐
相关产品推荐

