版本4.0.X中的抽象基类的自动映射问题

时间:2015-08-19 09:20:45

标签: automapper

使用继承更新到版本4后出现问题。我有以下代码:

public abstract class CarDA
{
}

public class StationCarDA : CarDA
{
}

public abstract class CarBL
{
    public CarBL(string type) 
    {
    }
}

public class StationCarBL : CarBL
{
    public StationCarBL() : base("stationcar") {}
}

Mapper.CreateMap<CarDA, CarBL>()
  .Include<StationCarDA, StationCarBL>();
Mapper.CreateMap<StationCarDA, StationCarBL>();

var dataAccessObject = new StationCarDA();

var result = Mapper.Map<CarDA, CarBL>(dataAccessObject);

在dotnetfiddle上试试:https://dotnetfiddle.net/p3JeNO

这在以前的版本中有效,因此结果是一个StationCarBL实例。现在我收到以下错误:

映射类型: CarDA - &gt; CarBL Test.CarDA - &gt; Test.CarBL

目的地路径: CarBL

来源价值: Test.StationCarDA

堆栈追踪:

[System.ArgumentException:Type需要有一个带0 args或只有可选args的构造函数 参数名称:type]

[AutoMapper.AutoMapperMappingException:

映射类型: CarDA - &gt; CarBL Test.CarDA - &gt; Test.CarBL

目的地路径: CarBL

来源价值: Test.StationCarDA]

这条消息对我没有意义。我已经定义了CarDA - &gt; CarBL映射以及它为什么要映射到抽象的CarBL?

1 个答案:

答案 0 :(得分:0)

看起来像是Automapper中的一个错误

https://github.com/AutoMapper/AutoMapper/issues/819