2017-06-22 49 views
1

我有以下型號:Automapper - 對象的單向通信,列出

public class Foo 
{ 
    // some fields or properties 

    public Foo Parent { get; set; } 
} 

我想看到什麼後:

public class Bar 
{ 
    public List<FooDTO> Foos { get; set; } 
} 

public class FooDTO 
{ 
    // some fields or properties 
} 

我希望能夠使用AutoMapper映射ParentFoo類型的屬性與屬性的通用List<>(或任何其他IEnumerable類型)的屬性。

回答

1

這是可能的AfterMapResolutionMapper.Mapper.Map電話:

var configuration = new MapperConfiguration(cfg => 
{ 
    cfg.CreateMap<Foo, FooDTO>(); 

    cfg.CreateMap<Foo, Bar>() 
     .AfterMap((src, dest, ctx) => 
     { 
      dest.Foos = new List<FooDTO>(); 

      var node = src.Parent; 

      while (node != null) 
      { 
       dest.Foos.Add(ctx.Mapper.Map<FooDTO>(node)); 

       node = node.Parent; 
      }; 
     }); 
}); 

var mapper = configuration.CreateMapper(); 
+0

嗯,謝謝你,但如果家長也有家長? – Sigin

+1

@Sigin然後使用一個循環。答案已更新。 –

+0

多數民衆贊成它,謝謝;) – Sigin