AutoMapper在所有领域应用通用/全局格式化程序?

Ray*_*ond 8 .net global formatter automapper

我正在使用AutoMapper 3.2.1

我只是要求我的项目的消费者希望我做一些简单的转换 - 将所有字符串字段修剪为空格并将null转换为string.empty.

如何以高效的方式在AutoMapper中执行此操作?

例如

public class Person()
{
   public string First {get; set;}
   public string Middle {get; set; }
   public string Last {get; set; }
   public DateTime DateOfBirth {get; set; }
}

public class PersonDto()
{
   public string First {get; set;}
   public string Second {get; set; }
   public string Last {get; set; }
   public DateTime DateOfBirth {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的地图示例:

Mapper.CreateMap<Person, PersonDto>().
    .ForMember(dst => dst.Second, opt => opt.MapFrom(src => src.Middle));

Mapper.CreateMap<PersonDto, Person>().
    .ForMember(dst => dst.Last, opt => opt.MapFrom(src => src.Second));
Run Code Online (Sandbox Code Playgroud)

我试过谷歌找到答案,看到有些人正在使用:

Mapper.ForSourceType<string>().AddFormatter(MyCustomStringFormatter)
Run Code Online (Sandbox Code Playgroud)

但似乎AddFormatter已经过时了?

And*_*ker 14

如果您确实要将这些规则应用于所有字符串,则可以设置映射stringstring:

Mapper.CreateMap<string, string>()
    .ConvertUsing(str => (str ?? "").Trim());
Run Code Online (Sandbox Code Playgroud)

从一个string属性映射到另一个属性时,将获取此规则.

  • 警告 - 这会将空字符串更改为现在返回为空。要保留空值,请使用“.ConvertUsing(str =&gt; str == null ? null : str.Trim());” (3认同)