自动映射 - 如何将复杂对象表单源映射到目标中的展平属性?

时间:2017-09-15 01:12:50

标签: .net automapper flatten

来源这些是来源类。 Prop2是一个复杂类型,我希望在我的目的地中展平。

public class Destination
{
    public string Prop1 { get; set; }
    public string Prop3 { get; set; }
    public decimal Prop4 { get; set; }
    public bool Prop5 { get; set; }
}

目的地这是目的地类

{
 [
   prop1: "abc1",
   prop3: efg1,
   prop4: 123.4,
   prop5: true
 ],

 [
   prop1: "abc2",
   prop3: efg2,
   prop4: 123.5,
   prop5: false
 ],

 [
   prop1: "abc3",
   prop3: efg3,
   prop4: 123.6,
   prop5: true
 ],

 [
   prop1: "abc4",
   prop3: efg4,
   prop4: 123.7,
   prop5: false
 ],

 ........
 ........
 ........

}

预期结果应该是目标类

中所有属性的集合
{{1}}

1 个答案:

答案 0 :(得分:0)

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Source2,Destination>().ForMember(d=>d.Prop1, o=>o.ResolveUsing((s,_,__,context)=>context.Items["Prop1"]));
});
Mapper.AssertConfigurationIsValid();

var source = new Source1 { Prop1="1", Prop2 = new List<Source2> { new Source2 {}, new Source2 {}, new Source2 {} }};
Mapper.Map<IEnumerable<Destination>>(source.Prop2, opts=>opts.Items["Prop1"]=source.Prop1).Dump();