[英]How to configure AutoMapper for Polymorphism with explicit member mapping?
考慮以下基本情況:
Mapper.CreateMap<FromBase, ToBase>()
.Include<FromD1, ToD1>()
.Include<FromD2, ToD2>();
Mapper.CreateMap<FromD1, ToD1>()
.ForMember( m => m.P0, a => a.MapFrom( x => x.Prop0 ) )
.ForMember( m => m.P1, a => a.MapFrom( x => x.Prop1 ) );
Mapper.CreateMap<FromD2, ToD2>()
.ForMember( m => m.P0, a => a.MapFrom( x => x.Prop0 ) )
.ForMember( m => m.P2, a => a.MapFrom( x => x.Prop2 ) );
Mapper.AssertConfigurationIsValid();
FromBase[] froms = {
new FromD1() { Prop0 = 10, Prop1 = 11 },
new FromD2() { Prop0 = 20, Prop2 = 22 }
};
var tos = Mapper.Map<FromBase[], ToBase[]>( froms );
附:
public class FromBase {
public int Prop0 { get; set; }
}
public class FromD1 : FromBase {
public int Prop1 { get; set; }
}
public class FromD2 : FromBase {
public int Prop2 { get; set; }
}
public class ToBase {
public int P0 { get; set; }
}
public class ToD1 : ToBase {
public int P1 { get; set; }
}
public class ToD2 : ToBase {
public int P2 { get; set; }
}
它看起來像Automapper的doc上的例子 。
但是Mapper.AssertConfigurationIsValid()
斷言拋出:
AutoMapperConfigurationException:“未映射ToBase上的以下1個屬性:P0在FromBase上添加自定義映射表達式,忽略或重命名該屬性。”
除非我遺漏了一些東西,與示例的唯一區別是我不依賴於約定,使用ForMember
手動映射屬性。 還有幾個派生類。 不知道這些會是怎么回事,但我想不出別的什么。
任何想法?
雖然配置驗證斷言失敗,但映射實際上工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.