自动映射:映射由基类对象组成的集合

时间:2014-08-08 23:10:28

标签: c# inheritance automapper

我正在使用AutoMapper

我在映射集合时遇到了一些问题。这是简化的结构。

public class A
{
}

public class B : A
{ 
}

public class C : A
{ 
}

public class Origin
{
    public List<A> Entities {get; set;}
}

 /********************/

public class A2
{
}

public class B2 : A2
{ 
}

public class C2 : A2
{ 
}

public class Destination
{
    public List<A2> Entities {get; set;}
}

Origin类有一个A对象的集合,用A,B或C实例填充。

我想将Origin映射到Destination,所以我添加了这个配置:

 Mapper.CreateMap<C, C2>();
 Mapper.CreateMap<B, B2>();
 Mapper.CreateMap<A, A2>();

问题是当Origin中的Entities集合映射到Destination中的集合时,所有对象都只映射到A2 entites。相反,我希望B和C实体在B2和C2实体中转换。

有任何建议要实现这一目标吗?

1 个答案:

答案 0 :(得分:3)

您还需要使用Include配置它。

Mapper.CreateMap<C, C2>();
Mapper.CreateMap<B, B2>();
Mapper.CreateMap<A, A2>().Include<B, B2>().Include<C, C2>();

更多:Mapping Inheritance