自动转换从具有列表<type>的类转换为具有列表<typea> </typeb> </types>的类

时间:2015-01-02 07:35:44

标签: c# automapper automapping

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

2 个答案:

答案 0 :(得分:0)

您可以将以下代码用于自动映射器

 Mapper.CreateMap<SourceClass ,DestinationClass>();

答案 1 :(得分:0)

您需要映射前两种类型和列表元素类型:

Mapper.CreateMap<SourceClass, DestinationClass>();
Mapper.CreateMap<TypeA, TypeB>();

AutoMapper会自动映射集合类型,但每个元素都是单独映射的,因此您需要为任何元素类型创建映射。