2017-05-14 196 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

只要複製邏輯,我會做的最多的是將條件部分提取到您可以調用的擴展方法中。

相關問題