2017-05-14 195 views
0

我需要将源模型中的空字符串映射为空到目标模型。 起初,我用这个下一个轮廓:如何使用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(); 

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

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

回答

0

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

相关问题