0
// 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的“填充”版本来实现这一点。
是的,那样做。我有很多领域,我不想明确地映射它们。我确实说过'没有在问题中明确地映射每个(X和Y)字段“。 – 2012-07-27 02:53:53
是的,我的意思是A.C.Y,而不是A.B.Y.谢谢你指出。 – 2012-07-27 02:54:40
你的确说过,出于某种原因,我认为你的意思是没有'CreateMap '和'CreateMap'行(这不应该是扁平化所必需的)。在我看来,你已经知道我会提供相同的选项,要么重命名D中的属性,要么使用ForMember显式映射每个属性。我想不出有任何其他的办法,所以如果你愿意,我会很乐意删除我的答案,只是让我知道。 –
danludwig
2012-07-27 11:18:23