Automapper将空字符串清空

时间:2011-10-03 22:16:06

标签: asp.net-mvc asp.net-mvc-3 automapper

当我尝试映射具有空字符串属性的对象时,目标也为null。有没有我可以打开的全局设置,说所有空字符串应该映射为空?

3 个答案:

答案 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);