Automapper-将对象列表映射到带有嵌套对象的单个复杂类型

问题描述 投票:0回答:1

我正在使用自动映射器,我需要将对象列表映射为单个复杂类型,该类型具有很多嵌套对象,但是我找不到正确的方法。当然,我还有很多具体的对象,但是我只是简化了我的情况。

来源:

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

谢谢!

c# asp.net-core .net-core automapper
1个回答
1
投票

基本上我已经用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>();
© www.soinside.com 2019 - 2024. All rights reserved.