【解決方法】メンバーのオートマッパー リスト

プログラミングQA


Automapperを使用してDtoのリストを他のオブジェクトにマッピングしたい

ソース:

public class Order
    {
        public List<ShipOnly> Ship { get; set; }
    }
public class ShipOnly
    {
        public string Name { get; set; }   
    }

行き先

public class Order
    {
        public List<ShipOnly> Ship { get; set; }
    }
public class ShipOnly
    {
        public string Name { get; set; }   
    }

私が試したこと:

2日間ここで立ち往生しています。リストをマップする方法を教えてください。

Mapper.CreateMap<AbcDto, Abcd>()
                .ForMember();

前もって感謝します。

解決策 1

メンバーをマップする必要はありません。 両方のタイプをマップする必要があるだけです。

与えられる:

C#
namespace Db
{
    public class Order
    {
        public List<ShipOnly> Ship { get; set; }
    }
    
    public class ShipOnly
    {
        public string Name { get; set; }   
    }
}

namespace Dto
{
    public class Order
    {
        public List<ShipOnly> Ship { get; set; }
    }
    
    public class ShipOnly
    {
        public string Name { get; set; }   
    }
}

初期化:

C#
Mapper.Initialize(cfg => {
    cfg.CreateMap<Db.Order, Dto.Order>();
    cfg.CreateMap<Db.ShipOnly, Dto.ShipOnly>();
});

使用:

C#
Db.Order source = new Db.Order
{
    Ship = new List<Db.ShipOnly>
    {
        new Db.ShipOnly { Name = "Test" }
    }
};

Dto.Order result = Mapper.Map<Dto.Order>(source);
Debug.Assert(result.Ship != null);
Debug.Assert(result.Ship.Count == 1);
Debug.Assert(result.Ship[0].Name == "Test");

コメント

タイトルとURLをコピーしました