三级自动播放器关系

时间:2018-01-15 11:58:01

标签: c# linq automapper

我正在与第三方API集成,而第三方API正在返回一个复杂的数据结构,在其中的一部分我有以下关系。

    public class Parent{
    public List<SmartLink> SmartLink { get; set; }
    }

SmartLink对象如下所示:

public class SmartLink {
    public Address AddressInfo { get; set; }
}

我试图以多种方式映射它,其中一种方式在下面,但我仍然在AddressInfo对象上得到一个null。

 cfg.CreateMap<Address, AddressInfo>(); 
 cfg.CreateMap<Source, Parent>()   
     //This is not allowed since Automapper cannot map to 2nd level                 
     .ForMember(d => d.SmartLink.AddressInfo, map => map.MapFrom(src => src.Smartlink.ToList().Select(addr => addr.Address)));

以下一行非常有效:

.ForMember(d => d.SmartLink, map => map.MapFrom(s => s.Smartlink.ToList()))

如何使用Automapper(任何指针)映射/展平第3级属性?

1 个答案:

答案 0 :(得分:0)

我对此已经过时了。我只是添加了以下映射,它起作用了。

cfg.CreateMap<Address, AddressInfo>();
cfg.CreateMap<SmartlinkPart, SmartLink>(MemberList.Destination)
                     .ForMember(d => d.AddressInfo, map => map.MapFrom(s => s.Address));

这个想法是,对于成员AddressInfo,上面的第一行将提供它的映射指令。