Automapper - сопоставляет список объектов одному сложному типу с вложенными объектами - PullRequest
0 голосов
/ 07 января 2020

Я использую Automapper, и мне нужно сопоставить список объектов с одним сложным типом, который имеет много вложенных объектов, но я не могу найти, что может быть правильным способом сделать это. Конечно, у меня есть намного больше конкретных объектов, но я просто упрощаю свою ситуацию.

Источник:

public abstract class SourceBase 
{
    public int? Value { get; set; }
}

public class Source1 : SourceBase
{
}

public class Source2 : SourceBase
{
}

Пункт назначения:

public abstract class DestBase 
{
    public int? Value { get; set; }
}

public class Dest1 : DestBase
{
}

public class Dest2 : DestBase
{
}

У меня есть ответ от службы:

public List<SourceBase> Foo { get; set; }

И я хочу сопоставить его с этим объектом:

public class DestObj 
{
    public Dest1 Dest1Obj { get; set; }
    public Dest2 Dest2Obj { get; set; }
}

Спасибо!

1 Ответ

1 голос
/ 07 января 2020

В основном я написал собственный картограф с Linq.

CreateMap<List<SourceBase>, DestObj>()
    .ForMember(dest => dest.Dest1Obj, opt => opt.MapFrom(src => src.Single(x => x.GetType() == typeof(Source1))))
    .ForMember(dest => dest.Dest2Obj, opt => opt.MapFrom(src => src.Single(x => x.GetType() == typeof(Source2))));

CreateMap<Source1, Dest1>();
CreateMap<Source2, Dest2>();
...