如何强制Automapper覆盖数组属性?

时间:2012-10-14 16:06:34

标签: c# automapper automapper-2

我在项目中使用Automapper将业务实体映射到DTO。

public class TransportStop
{
    public Point[] Points { get; set; }
}

public class TransportStopDto
{
    public PointDto[] Points { get; set; }

    public TransportStopDto()
    {
        Points = new PointDto[0];
    }
}

在构造函数中,我使用空数组初始化Points属性,以确保它始终不为null。我正在使用基本配置进行映射。

Mapper.CreateMap<Point, PointDto>();
Mapper.CreateMap<TransportStop, TransportStopDto>();

TransportStop stop = new TransportStop()
{
    Points = new Point[]
    {
        new Point() { X = 1, Y = 1 },
        new Point() { X = 2, Y = 2 }
    }
};

TransportStopDto dto = Mapper.Map<TransportStop, TransportStopDto>(stop);

使用Automapper 2.0.0它运行得很好,但在升级到2.2.0之后,我得到了内部异常的映射异常:

  

索引超出了数组的范围

似乎Automapper尝试映射数组的每个成员,而不是覆盖整个数组。如果我从构造函数中删除属性初始化并将其保留为null,则一切正常。

是否可以将Automapper 2.2.0配置为始终使用新的数据属性覆盖现有的数组属性?

1 个答案:

答案 0 :(得分:0)

我通过降级到2.0.0版解决了我的问题。