Member 13229879 Ответов: 1

Форма списка Automapper


Я хочу сопоставить список Dto с другим объектом с помощью Automapper

Источник:
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 Ответов

Рейтинг:
6

Richard Deeming

Вам не нужно сопоставлять член; вам просто нужно сопоставить оба типа.

Дано:

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

Инициализация:
Mapper.Initialize(cfg => {
    cfg.CreateMap<Db.Order, Dto.Order>();
    cfg.CreateMap<Db.ShipOnly, Dto.ShipOnly>();
});

Воспользуйся:
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");