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));

助言がありますか?

注: DX を D.BX に、DY を D.CY に変更すると機能することは承知しています。D のプロパティにプレフィックスを付けずにこれを実現したいと考えています。マップの「塗りつぶし」バージョンを使用してこれを達成することもできます。

4

1 に答える 1

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))
;
于 2012-07-26T22:59:57.900 に答える