如何使用automapper将空字符串映射为null?

时间:2017-05-14 14:08:54

标签: c# automapper

我需要将源模型中的空字符串映射为null到目标模型。 起初我使用下一个配置文件:

public class MyProfile:Profile
{
    public MyProfile()
    {
       CreateMap<SrcModel, DestModel>()
       .ForMember(dst => dst.Field1, opt => 
       {
          opt.Condition(src => !string.IsNullOrEmpty(src.src_Field1));
          opt.MapFrom(src => src.src_Field1)
       })
       //.......
       //same for other 15 fields
    }
}

但重复相同的逻辑看起来不是很好,很难修改它。

此外,我还尝试为此字符串创建特殊地图:

CreateMap<string, string>().ConvertUsing(src => string.IsNullOrEmpty(src) ? 
null : src)

但是这样的字符串映射对我的所有地图都有影响,但我只需要几个地图的逻辑,而不是所有地图。

我也尝试过使用ForAllMembers方法:

... .ForAllMembers(opt => opt.Condition();

但是没有办法定义源成员的类型,为字符串指定一些条件。

为一个地图的几个相同类型的成员定义一些公共映射逻辑的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

只需复制逻辑,我所做的最多就是将条件部分提取到您可以调用的扩展方法中。