自动填充展平嵌入的对象

时间:2017-03-02 17:07:23

标签: automapper flatten

我有一个课程(比下面定义的更多的字段,但你得到了基本的想法):

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

My Embedded对象有很多字段(我有多个嵌入对象),它们会按照约定映射到Destination对象中的字段。

我需要类似IncludeBase&lt;&gt;提供的功能。但是能够指定哪个字段应该用作src。

有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我找到了Map&lt;,&gt;(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);