Строка с разделителями-запятыми AutoMapper - PullRequest
4 голосов
/ 03 апреля 2012

У меня есть строка с разделителями-запятыми, и я хочу сопоставить ее с объектом.Можно ли это сделать с помощью автоматического автомата?

Спасибо

1 Ответ

5 голосов
/ 03 апреля 2012

Не зная слишком много деталей, мне кажется, что есть два способа сделать это, учитывая следующее DTO, которое мы хотим заполнить:

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]));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...