我想多域对象映射到其响应DTO的升级后Automapper继承映射不起作用。 V3.3.1.0 - > V4.0.4.0
域
public abstract class Order
{
public int Id { get; set; }
}
public class OnlineOrder : Order
{
public string Referrer { get; set; }
}
public class MailOrder : Order
{
public string Address { get; set; }
}
DTO
public abstract class OrderDto
{
public int Id { get; set; }
}
public class OnlineOrderDto : OrderDto
{
public string Referrer { get; set; }
}
public class MailOrderDto : OrderDto
{
public string Address { get; set; }
}
地图定义
Mapper.CreateMap<Order, OrderDto>()
.Include<OnlineOrder, OnlineOrderDto>()
.Include<MailOrder, MailOrderDto>();
Mapper.CreateMap<OnlineOrder, OrderDto>();
Mapper.CreateMap<MailOrder, OrderDto>();
对象映射
var orders = new List<Order>()
{
new OnlineOrder { Referrer = "Google", Id = 123 },
new MailOrder() { Address = "1600 Amphitheatre Parkway", Id = 124}
};
var mapped = Mapper.Map<List<OrderDto>>(orders);
我希望Automapper能够辨别和使用规定选择适当的源和目标的定义通过型式。即一个网上订单将被映射到一个OnlineOrderDto和邮购我将被映射到一个MailOrderDto。事实并非如此,因为我得到了“无法创建抽象类的实例”的错误。我几乎可以肯定我之前使用过类似的模式,但是我碰到了墙壁,我将不胜感激。
更新:在升级到最新版本的Automapper V4.0.4.0后,这似乎只是一个问题。
类似[问题](http://stackoverflow.com/questions/32141447/updated-automapper-from-3-to-4-broke-inheritance-mapping/32142076)。 – vendettamit