我正在使用AutoMapper 3.2.1
我刚要求我的项目的消费者希望我做一些简单的转换 - 将所有字符串字段修剪为空格并将null转换为string.empty。
如何以有效的方式在AutoMapper中执行此操作?
e.g。
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; }
}
我的地图示例:
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));
我试着谷歌找到答案,看到有些人在使用:
Mapper.ForSourceType<string>().AddFormatter(MyCustomStringFormatter)
但似乎AddFormatter已经过时了?
答案 0 :(得分:11)
如果您确实要将这些规则应用于所有字符串,则可以设置从string
到string
的映射:
Mapper.CreateMap<string, string>()
.ConvertUsing(str => (str ?? "").Trim());
从一个string
属性映射到另一个属性时,将会选择此规则。
答案 1 :(得分:0)
在我的情况下,我环顾四周寻找可以修剪所有弦道具的解决方案。不适用于所有现有的地图定义,仅适用于某些特定的地图定义。 我的解决方案:
public class MyFragment extends Fragment {
public void onStart() {
MyFragmentViewModel userModel = ViewModelProviders.of(getActivity()).get(MyFragmentViewModel.class);
}
}