Class SourceClass
{
string name {get;set;}
IList<TypeA> typeAList {get;set;}
}
Class DestinationClass
{
string name {get;set;}
IList<TypeB> typeBList {get;set;}
}
如何使用automapper映射这两个类?
尝试1: -
Mapper.CreateMap<SourceClass, DestinationClass>().ForMember(d => d.typeBList, s => s.MapFrom(x => x.typeAList.Select(a => new typeB() { prop1 = a.prop1, prop2 = a.prop2 }).ToList<typeB>()));
我收到运行时转换错误。
尝试2: -
Mapper.CreateMap<typeB,typeA>().ForMember(d=>d.prop1,opt=>opt.MapFrom(s=>s.prop1));
Mapper.CreateMap<SourceClass, DestinationClass>().ForMember(d => d.typeBList, s => s.MapFrom(x => x.typeAList));
错误: - 缺少类型映射配置或不支持的映射。
映射类型: typeA - &gt;的TypeB
typeA - &gt;的TypeB
目的地路径: typeB.typeB0 [0]
来源价值: 的typeA
答案 0 :(得分:0)
您可以将以下代码用于自动映射器
Mapper.CreateMap<SourceClass ,DestinationClass>();
答案 1 :(得分:0)
您需要映射前两种类型和列表元素类型:
Mapper.CreateMap<SourceClass, DestinationClass>();
Mapper.CreateMap<TypeA, TypeB>();
AutoMapper会自动映射集合类型,但每个元素都是单独映射的,因此您需要为任何元素类型创建映射。