2017-05-14 10 views
0

ソースモデルの空の文字列を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ために、ソース・メンバーのタイプを定義しない方法はありません。

1つのマップで同じタイプの複数のメンバーに共通のマッピングロジックを定義する最良の方法は何ですか?

答えて

0

ちょうどロジックを複製します。私がやるべきことは、あなたが呼び出せる拡張メソッドに条件部分を抽出することです。

関連する問題