我想在兩個對象列表之間進行映射。源類型具有A
類型的複雜屬性;目標類型是類型爲A
的扁平化子集加上源類型中的附加標量屬性。AutoMapper是否可以隱式地展平這個映射?
public class A
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Source
{
public A MyA { get; set; }
public int SomeOtherValue { get; set; }
}
public class Destination
{
public string Name { get; set; }
public int SomeOtherValue { get; set; }
}
如果它是不明確的,我想Source.MyA.Name
映射到Destination.Name
和Source.SomeOtherValue
映射到Destination.SomeOtherValue
。
實際上,類型A
有十幾個屬性,其中約80%映射到Destination
中的同名屬性。我能得到的東西的工作,如果我明確地拼出映射在CreateMap
像這樣:
CreateMap<Source, Destination>()
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MyA.Name));
這裏的缺點是我想避免添加ForMember
線每個A
的性能需要得到複製到Destination
。我希望我可以做這樣的事情:
CreateMap<Source, Destination>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.MyA));
但是,如果我嘗試了上面我得到的,如果映射會註冊一個運行時錯誤:「爲成員自定義配置僅支持頂級個人會員的類型「。
感謝
此解決方案的問題是Mapper.AssertConfigurationIsValid()將失敗。 – Schneider