2016-06-14 64 views
0

我有一個目標類像下面Automapper與不同類型的對象嵌套

public class Order 
{ 
    public string OrderId { get; set; } 
    public List<Delivery> Deliveries { get; set;} 
} 

public class Delivery 
{ 
    public string ProductName { get; set; } 
} 

我從下面的源類以上映射類產品名稱的

public class OrderDTO 
{ 
    public string OrderId { get; set; } 
    public List<OrderDelivery> Deliveries { get; set; } 
} 
public class OrderDelivery 
{ 
    public List<OrderDeliveryDetails> ProductDeliveryDetails { get; set; } 
} 
public class OrderDeliveryDetails 
{ 
    public string ProductName { get; set; } 
} 

我怎樣才能做到這一點使用Automapper。
(注:請不要使用List<OrderDeliveryDetails>OrderDelivery類混淆這是因爲,它可能有子產品爲好,但我需要家長ProductName只。)採取父產品名稱你

回答

0

那麼,如果指的是第一,你可以嘗試沿着這些路線的東西(否則我可能誤解了你的問題,你可以忽略我的回答):

public class AutoMapperConfiguration : Profile 
{ 
    private readonly IConfiguration _mapper; 

    public AutoMapperConfiguration(IConfiguration mapper) 
    { 
     _mapper = mapper; 
    } 

    protected override void Configure() 
    { 
     _mapper.CreateMap<OrderDTO, Order> 
      .ForMember(d => d.OrderId, o => o.MapFrom(s => s.OrderId)) 
      .ForMember(d => d.Deliveries, o => o.MapFrom(s => s.Deliveries)); 

     _mapper.CreateMap<OrderDelivery, Delivery> 
      .ForMember(d => d.ProductName, o => o.MapFrom(s => s.ProductDeliveryDetails.First().ProductName)); 
    } 
} 

,然後簡單地

_mapper.Map(orderDto); 

(這是,只要你有使用AutoMapper所需的所有接線)。