2012-04-03 18 views
3

コンマで区切られた文字列があり、それをオブジェクトにマップしたい。 automapperとこれは可能ですか?オートマッパーカンマで区切られた文字列

あまりにも多くの詳細を知らなくても感謝

+0

あなたはいくつかのサンプルコードを投稿することができますか?ターゲットオブジェクトと文字列リストの外観はどうですか? – nemesv

答えて

4

を、我々が移入したい次DTO与えられ、これを達成するには2つの方法が、あるように思える:

public class DTO 
{ 
    public string FirstName { get;set; } 
    public string LastName { get;set; } 
} 

およびサンプル入力:

string input = "Andrew,Whitaker"; 
  1. カスタム型コンバータを書く(推奨):

    public class CommaDelimitedStringConverter : TypeConverter<string, DTO> 
    { 
        protected override DTO ConvertCore(string source) 
        { 
         string[] tokens = source.Split(','); 
    
         DTO result = null; 
    
         if (tokens.Length == 2) 
         {   
          result = new DTO(); 
          result.FirstName = tokens[0]; 
          result.LastName = tokens[1]; 
         } 
         return result; 
        } 
    } 
    
    Mapper.CreateMap<string, DTO>() 
        .ConvertUsing<CommaDelimitedStringConverter>(); 
    
  2. (これは迅速かつ汚いでない限り推奨されません)ワンオフ各プロパティの地図:

    Mapper.CreateMap<string, DTO>() 
        .ForMember(dest => dest.FirstName, opt => opt.MapFrom(src => src.Split(',')[0])) 
        .ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.Split(',')[1])); 
    
関連する問題