2017-03-02 78 views
0

我有一個類(更多領域比定義見下文,但你的基本想法):Automapper平滑式的嵌入對象

public class Embedded 
{ 
    public int Field1{get;set;} 
} 
public class Source 
{ 
    public int Field2{get;set;} 
    public Embedded Embedded{get;set;} 
} 

public class Destination 
{ 
    public int Field1{get;set;} 
    public int Field2{get;set;} 
} 

正常的做法是:

Mapper.Initialise(cfg=> 
{ 
    cfg.CreateMap<Source, Destination>(dest=>dest.Field1, opt=>opt.MapFrom(src=>src.Embedded.Field1)); 
} 

我的嵌入對象有許多字段(並且我有多個嵌入對象),它們將按照慣例映射到Destination對象中的字段。

我需要類似IncludeBase <>提供的功能,但能夠指定應將哪個字段用作src。

有沒有更簡單的方法呢?

回答

0

我發現地圖<,>(S,d)和AfterMap:

Mapper.Initialize(cfg=>{ 
    cfg.CreateMap<Embedded, Destination>(); 
    cfg.CreateMap<Source, Destination>() 
     .AfterMap((s,d) { 
      Mapper.Map(s.Embedded, d); 
     } 
}); 

var src = new Source{ 
    Embedded = new Embedded(); 
} 
var dest = Mapper.Map<Source, Destination>(src);