我需要:
// SOURCE
class A {
public B B;
public C C;
}
class B { public int X; }
class C { public int Y; }
// DESTINATION
class D {
public int X;
public int Y;
}
// I want to configure following operation
// without mapping each (X and Y) fields explicitly.
D.X = A.B.X;
D.Y = A.C.Y;
// here is the essence of what I am trying to accomplish.
Mapper.CreateMap<B, D>();
Mapper.CreateMap<C, D>();
var map = Mapper.CreateMap<A, D>();
map.ForMember(dst => dst, opt => opt.MapFrom(src => src.B));
map.ForMember(dst => dst, opt => opt.MapFrom(src => src.C));
有什么建议吗?
注意:我知道如果我将D.X更改为D.BX而将D.Y更改为D.CY,它将起作用。我想在不添加D属性的前提下完成此操作。我也可以通过使用Map的“填充”版本来实现这一点。
答案 0 :(得分:0)
// I want to configure following operation
// without mapping each (X and Y) fields explicitly.
D.X = A.B.X;
D.Y = A.B.Y;
根据你的班级,B没有Y.B有X.你的意思是D.Y = A.C.Y
?如果是这样的话:
Mapper.CreateMap<A, D>()
.ForMember(d => d.X, o => o.MapFrom(s => s.B.X))
.ForMember(d => d.Y, o => o.MapFrom(s => s.C.Y))
;