关于AutoMapper,我们完全没有问题。
员工模型对象。
public class Employee {
public string FirstName { get; set; }
public string LastName { get; set; }
public decimal HourlyRate { get; set; }
public List<string> EmailAddresses { get; set; }
}
Dto对象:
public class UpdateEmployeeDetailsDto {
public decimal HourlyRate { get; set; }
public string EmailAddress1 { get; set; }
public string EmailAddress2 { get; set; }
}
我想将DTO映射到Employee对象,并将EmailAddress1和EmailAddress2转换为List。
我在google和SO搜索了这类东西,但是我发现我已经发现我无法将它们翻译成工作代码了。
任何帮助?
答案 0 :(得分:3)
使用AfterMap
提供自定义映射(根据您的情况从属性创建列表):
Mapper.CreateMap<UpdateEmployeeDetailsDto, Employee>()
.AfterMap((dto, e) => e.EmailAddresses = new List<string>() {
dto.EmailAddress1,
dto.EmailAddress2
});
答案 1 :(得分:2)
除了@lazyberezovsky所说的,你还可以创建一个自定义解析器:
public class CustomResolver : ValueResolver<UpdateEmployeeDetailsDto, List<string>>
{
protected override List<string> ResolveCore(UpdateEmployeeDetailsDto source)
{
return new List<string> { source.EmailAddress1, source.EmailAddress2 }
}
}
Mapper.CreateMap<UpdateEmployeeDetailsDto, Employee>()
.ForMember(dest => dest.EmailAddresses, opt => opt.ResolveUsing<CustomResolver>());
重点是什么?您可以将其设置为更通用,并使用它来解决案例Value1
,Value2
,Value3
... ValueN
映射到List<ValueType> Values