Consider the following basic case:
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 );
With:
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; }
}
It looks like the example on Automapper's doc.
However the Mapper.AssertConfigurationIsValid()
assertion throws:
AutoMapperConfigurationException: "The following 1 properties on ToBase are not mapped: P0 Add a custom mapping expression, ignore, or rename the property on FromBase."
Unless I am missing something, the only differences with the example it that I am not relying on conventions, mapping the properties manually with ForMember
. Also there are several derived classes.
Not sure how these would be a problem, but I can't think of anything else.
Any idea?
The mapping actually works fine, although the configuration validation assertion fails...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With