我正在尝试使用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。
关于如何实现这一目标的任何想法?
谢谢