我很惊讶我还没有找到这个问题。
我有一个类似于以下的对象结构:
NumberDisplay
因此,想法是从Source实例中,automapper创建一个Child实例并将其添加到 Dest.Children 集合中。
我已经使用了以下方法:
public class Source
{
public int SomeId {get;set;}
public int NestedIdOne {get;set;}
public int NestedIdTwo {get;set;}
}
public class Dest
{
public Dest()
{
this.Children = new List<Child>();
}
public int SomeId {get;set;}
public IList<Child> Children {get;set}
}
public class Child
{
public int NestedIdOne {get;set;}
public int NestedIdTwo {get;set;}
}
这很好但我想知道是否有更“自动”的方法。
我尝试过这样做:
CreateMap<Source, Dest>().ConstructUsing(MyMethod):
private Dest MyMethod(Source mySource)
{
//... build Dest by hand.
}
但这不起作用。
感谢您的帮助。
答案 0 :(得分:0)
创建两个地图并从父级调用子地图:
var configuration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Child>();
cfg.CreateMap<Source, Dest>()
.AfterMap((src, dest, ctx) =>
{
dest.Children = new List<Child>();
dest.Children.Add(ctx.Mapper.Map<Child>(src));
});
});
用法:
var mapper = configuration.CreateMapper();
Dest destination = mapper.Map<Source, Dest>(source);