2011-12-01 89 views
1

我想「變平」源列表的內容到目的地對象上的字段,如下所示:從源到DESTAutomapper「扁平化」

class Source 
{ 
    public IList<TypeX> TypeXs {get; set;} 
} 

class Dest 
{ 
    public int IdentifierXValue { get; set;} 
    public int IdentifierYValue { get; set;} 
    public int IdentifierZValue { get; set;} 
} 

class TypeX 
{ 
    Identifier Identifier {get; set;} 
    float Value {get; set;} 
} 

enum Identifier 
{ 
    X, 
    Y, 
    Z 
} 

測繪工作正常使用下面的映射:

Mapper.CreateMap<Source, Dest>.ForMember(dest => dest.IdentifierXValue, opt =>  opt.MapForm(src => src.TypeXs.First(f => f.Identifier == Identifier.X).Value)); 

如何實現反向映射? 「Source」引用已經存在,它將預先填充TypeXs的引用。我只需要搜索一個TypeX對象的標識符匹配(比如X),並且我需要用Dest對象中的IdentifierXValue替換該對象。

回答

1

這爲我工作

Mapper.CreateMap<Dest, Source>() 
     .ForMember(d => d.TypeXs, opt => opt.Ignore()) 
     .AfterMap((s, d) => 
         { 
          d.TypeXs.First(tx => tx.Identifier == Identifier.X).Value = s.IdentifierXValue; 
          d.TypeXs.First(tx => tx.Identifier == Identifier.Y).Value = s.IdentifierYValue; 
          d.TypeXs.First(tx => tx.Identifier == Identifier.Z).Value = s.IdentifierZValue; 
         } 
       ); 
+0

那正是我一直在尋找。非常感謝。 – rhk98