2016-10-11 4 views
0

私は2つのモデルがあります:プロパティ名を一致させる設定規則を設定する方法は文字列コレクションですか?

public class UserModel 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public string NetId { get; set; } 
    public string Email { get; set; } 
    public string Departments { get; set; } 
    public string Titles { get; set; } 
} 


public class UserReport : Entity 
{ 
    public string Name { get; set; } 
    public string NetId { get; set; } 
    public string Email { get; set; } 
    public List<string> Departments { get; set; } 
    public List<string> Titles { get; set; } 
} 

をそのように私はこのような私のautomapperマッピング書くことができます、私はこれのすべてのインスタンスに対してこれを行うにはしたくないので、しかし

CreateMap<UserReport, UserModel>() 
      .ForMember(x => x.Departments, x => x.MapFrom(y => string.Join("\n", y.Departments))) 
      .ForMember(x => x.Titles, x => x.MapFrom(y => string.Join("\n", y.Titles))); 

をこのアプローチは、ほぼすべてのPOCOからDTOへの変換に使用されます。宛先プロパティ名が文字列型で、文字列結合を行うにはlist<string>のソースタイプのプロパティと一致するかどうかを確認するためにコンフォームを書くことができますか?

答えて

1

マッピングは、巣あなただけList<string>stringのための追加マップを定義することができるように:

CreateMap<List<string>, string>().ConvertUsing(strings => { 
    if (strings != null) 
     return string.Join("\n", strings); 
    return ""; 
}); 
+0

おっと、私はそれを知りませんでした。だから私はこのマップが他の「上位マップ」の前に現れなければならないと思いますか? – SventoryMang

+0

マッピング宣言の順序が重要ではないと思います –

関連する問題