2014-10-17 138 views
0

我需要映射到屬性都是相同類型的對象的集合。使用AutoMapper映射同一類型的多個集合屬性

例如:

目的地:

public class MyNewObject 
{ 
    Collection TypeCollection1 { get; set; } 
    Collection TypeCollection2 { get; set; } 
} 

public class MyType 
{ 
    string Field1 { get; set; } 
    string Field2 { get; set; } 
} 

來源:

public class MyLegacyObject 
{ 
    Collection LegacyCollection1 { get; set; } 
    Collection LegacyCollection2 { get; set; } 
} 

public class MyLegacyType 
{ 
    string OldField1 { get; set; } 
    string OldField2 { get; set; } 
} 

對於非集合,我已經習慣了做這樣的事情:

Mapper.CreateMap() 
    .ForMember(dest => dest.TypeCollection1, opt => opt.MapFrom( 
     src => new Collection 
     { 
      // is there some kind of ForEach thing I can do??? 
      Field1 = src.OldField1, 
      Field2 = src.OldField2 
      ??? // this obviously doesn't work because these are the properties on MyType, not the collection 
     })); 

回答

0
Mapper.CreateMap<MyLegacyType, MyType>() 
    .ForMember(dest => dest.Field1, opt => opt.MapFrom(src => src.OldField1)) 
    .ForMember(dest => dest.Field2, opt => opt.MapFrom(src => src.OldField2)); 
Mapper.CreateMap<MyLegacyObject, MyNewObject>() 
    .ForMember(dest => dest.TypeCollection1, opt => opt.MapFrom(src => src.LegacyCollection1)) 
    .ForMember(dest => dest.TypeCollection2, opt => opt.MapFrom(src => src.LegacyCollection2)) 

我想我解決了我自己的問題。這應該做到這一點。

相關問題