嵌套对象子类的自动映射器拼合

时间:2018-07-18 18:55:48

标签: c# inheritance interface nested automapper

我正在尝试使用AutoMapper执行以下操作,但未获得预期的结果。

我具有以下配置:

public interface IFlatInterface
{
    public string A {get; set;}
    public string B {get; set;}
    public string C {get; set;}
    public bool D {get; set;}
}


public class ParentObject 
{
    public Data X {get; set;}
    public Measure Y {get; set;} 
}

public class Data 
{
    public string A {get; set;}
    public string B {get; set;}
}

public class Measure
{
    public string C {get; set;}
    public bool D {get; set;}
}

我已经定义了以下映射规则

cfg.CreateMap<IFlatInterface, ParentObject>()
   .ForMember(p => p.Measure, o => o.MapFrom(f => f))
   .ForMember(p => p.Data, o => o.MapFrom(f => f))

cfg.CreateMap<ParentObject, IFlatInterface>()
   .ForMember(i => i.A, o => o.MapFrom(p => p.X.A))
   .ForMember(i => i.B, o => o.MapFrom(p => p.X.B))
   .ForAllOtherMembers(o => o.MapFrom(p.Y))

问题在于,对于所有其余字段,填充的值是字符串“ p.Measure”。我想将映射以递归方式在Measure的成员上进行。我不能提出广泛的规则,因为不同的类可以实现IFlatInterface。

关于如何实现这一目标的任何想法?

谢谢

0 个答案:

没有答案