AutoMapper逗号分隔字符串

时间:2012-04-03 18:57:11

标签: automapper

我有逗号分隔的字符串,并希望将其映射到对象。这可能与automapper有关吗?

由于

1 个答案:

答案 0 :(得分:5)

在不了解太多细节的情况下,在我看来有两种方法可以实现这一点,因为我们想要填充以下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]));