我有逗号分隔的字符串,并希望将其映射到对象。这可能与automapper有关吗?
由于
答案 0 :(得分:5)
在不了解太多细节的情况下,在我看来有两种方法可以实现这一点,因为我们想要填充以下DTO:
public class DTO
{
public string FirstName { get;set; }
public string LastName { get;set; }
}
和示例输入:
string input = "Andrew,Whitaker";
编写自定义类型转换器(推荐):
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>();
一次性映射每个属性(不推荐,除非这是快速和脏的):
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]));