3

I am using Automapper in my project to map business entities to DTO.

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

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

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

In constructor I am initializing Points property with an empty array to make sure it is always not null. I am using basic configuration for mapping.

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);

With Automapper 2.0.0 it worked just fine, but after upgrading to version 2.2.0 I get mapping exception with inner exception:

Index was outside the bounds of the array

It seems Automapper tries to map every member of array, instead of overwriting the whole array. If I remove property initialization from constructor and leave it null, everything works.

Is it possible to configure Automapper 2.2.0 to always overwrite existing array property with new one?

abatishchev
  • 98,240
  • 88
  • 296
  • 433

1 Answers1

0

I solved my problem by downgrading to version 2.0.0.