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

本文关键字:集合 对象 基类 映射 | 更新日期: 2023-09-27 18:17:24

我用的是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实体。相反,我希望将B和C实体转换为B2和C2实体。

有什么建议吗?

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

您还需要配置Include

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

更多:Mapping Inheritance