当我尝试映射具有空字符串属性的对象时,目标也为null。有没有我可以打开的全局设置,说所有空字符串应该映射为空?
答案 0 :(得分:21)
这样的事情应该有效:
public class NullStringConverter : ITypeConverter<string, string>
{
public string Convert(string source)
{
return source ?? string.Empty;
}
}
在您的配置类中:
public class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.CreateMap<string, string>().ConvertUsing<NullStringConverter>();
Mapper.AddProfile(new SomeViewModelMapper());
Mapper.AddProfile(new SomeOtherViewModelMapper());
...
}
}
答案 1 :(得分:14)
如果您需要非全局设置,并希望按属性执行此操作:
Mapper.CreateMap<X, Y>()
.ForMember(
dest => dest.FieldA,
opt => opt.NullSubstitute(string.Empty)
);
答案 2 :(得分:10)
与David Wick的答案类似,您也可以将ConvertUsing
与lambda表达式一起使用,这样就无需额外的类。
Mapper.CreateMap<string, string>().ConvertUsing(s => s ?? string.Empty);