3

プロジェクトで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を構成して、既存の配列プロパティを常に新しいもので上書きすることはできますか?

4

1 に答える 1

0

バージョン2.0.0にダウングレードすることで問題を解決しました。

于 2012-10-22T07:04:04.383 に答える