.NET Core:Trim 全局使用 AutoMapper 的所有空格
.NET Core: Trim all blank spaces globally using AutoMapper
我有要求不保留开头和结尾的空格。我的意思是,我应该 trim 应用程序中收到的每个字符串,直到我保存它。
我看到有一个问题 几乎 符合我的要求,根据 问题看起来是这样的:
Mapper.CreateMap<string, string>()
.ConvertUsing(str => str == null ? null : str.Trim()).Trim());
但是,由于我使用的是 .NET Core,AutoMapper.Mapper
静态对象不包含 CreateMap<>
的定义,所以我猜它在这项新技术上可能会有所不同。
我试图在我的 Startup.cs
上定义这样的东西,但没有成功:
services.AddAutoMapper(
cfg => cfg.CreateMap<string, string>().ConvertUsing(str => str == null ? null : str.Trim()),
typeof(Startup)
));
我还看到了创建自定义配置文件 class 之类的东西,例如 StringTrimmerProfile.cs
,然后在 Startup 中包含该配置文件,但这听起来与我之前所做的几乎相同。该提案取自 .
我不想对每个配置文件执行此操作,我想对应用程序上映射的每个字符串全局执行此操作。
如何定义要应用于每个模型的全局预映射?
听起来很简单,但我找不到答案,因为所有信息似乎都是针对 .NET 4.5 或更低版本的。
编辑 1:
看了文档,找到了ValueTransformers的概念,但是也没用
好吧,折腾了一段时间,找到了解决办法,估计不止一个吧
我创建了一个 StringTrimmerProfile.cs
实现 AutoMapper.ITypeConverter<T, D>
:
public class StringTrimmerProfile : ITypeConverter<string, string>
{
public string Convert(string source, string destination, ResolutionContext context)
{
return source == null ? null : source.Trim();
}
}
然后,在 Startup.cs
,在 ConfigureServices()
,我做了以下事情:
services.AddAutoMapper(
cfg => cfg.CreateMap<string, string>().ConvertUsing(new StringTrimmerProfile())
);
通过这样做,Convert()
方法会为每个包含字符串的模型触发。
我有要求不保留开头和结尾的空格。我的意思是,我应该 trim 应用程序中收到的每个字符串,直到我保存它。
我看到有一个问题 几乎 符合我的要求,根据
Mapper.CreateMap<string, string>()
.ConvertUsing(str => str == null ? null : str.Trim()).Trim());
但是,由于我使用的是 .NET Core,AutoMapper.Mapper
静态对象不包含 CreateMap<>
的定义,所以我猜它在这项新技术上可能会有所不同。
我试图在我的 Startup.cs
上定义这样的东西,但没有成功:
services.AddAutoMapper(
cfg => cfg.CreateMap<string, string>().ConvertUsing(str => str == null ? null : str.Trim()),
typeof(Startup)
));
我还看到了创建自定义配置文件 class 之类的东西,例如 StringTrimmerProfile.cs
,然后在 Startup 中包含该配置文件,但这听起来与我之前所做的几乎相同。该提案取自
我不想对每个配置文件执行此操作,我想对应用程序上映射的每个字符串全局执行此操作。
如何定义要应用于每个模型的全局预映射? 听起来很简单,但我找不到答案,因为所有信息似乎都是针对 .NET 4.5 或更低版本的。
编辑 1: 看了文档,找到了ValueTransformers的概念,但是也没用
好吧,折腾了一段时间,找到了解决办法,估计不止一个吧
我创建了一个 StringTrimmerProfile.cs
实现 AutoMapper.ITypeConverter<T, D>
:
public class StringTrimmerProfile : ITypeConverter<string, string>
{
public string Convert(string source, string destination, ResolutionContext context)
{
return source == null ? null : source.Trim();
}
}
然后,在 Startup.cs
,在 ConfigureServices()
,我做了以下事情:
services.AddAutoMapper(
cfg => cfg.CreateMap<string, string>().ConvertUsing(new StringTrimmerProfile())
);
通过这样做,Convert()
方法会为每个包含字符串的模型触发。