2017-03-02 2 views
0

Ich habe eine Klasse (viele mehr Felder als unten definiert, aber man die Grundidee erhalten):AutoMapper Abflachung eingebettete Objekte

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

Der normale Ansatz wäre:

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

Mein eingebettetes Objekt hat viele Felder (und ich habe mehrere eingebettete Objekte) und sie werden per Konvention den Feldern im Zielobjekt zugeordnet.

Ich brauche etwas wie die Funktionalität, die von IncludeBase <> zur Verfügung gestellt wird, aber um anzugeben, welches Feld verwendet werden soll, um als src zu verwenden.

Gibt es eine einfachere Möglichkeit, dies zu tun?

Antwort

0

fand ich Map <,> (s, d) und 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); 
Verwandte Themen