昨天我发布了这篇文章:
Automapper - Inheritance mapper not working with type converter
现在我正在尝试按照@jimmy-bogard的答案所说做,但是不幸的是仍然没有成功。基类成员没有被映射。
Jimmy说:
然而,你可以使用ConstructUsing来构建初始目标对象。或者使用一个继承的自定义AfterMap。只是不能使用ConvertUsing。
这是我的新代码。
/* BaseClassConstructor.cs */
public class BaseClassConstructor {
public static BaseClass Construct(ResolutionContext context) {
if (context == null || context.IsSourceValueNull)
return null;
var src = (SourceClass)context.SourceValue;
return new BaseClass() {
CommonAttr = src.SourceAttr
};
}
}
/* AutoMapperConfig.cs */
public static class AutoMapperConfig {
public static void RegisterMappings() {
AutoMapper.Mapper.Initialize(config => {
config
.CreateMap<SourceClass, BaseClass>()
.Include<SourceClass, DerivedClass1>()
.Include<SourceClass, DerivedClass2>()
.ConstructUsing(s => BaseClassConstructor.Construct(s));
config
.CreateMap<SourceClass, DerivedClass1>()
.ForMember(dest => dest.Dummy, o => o.MapFrom(src => src.SourceAttr2))
.IncludeBase<SourceClass, BaseClass>();
});
}
}
我有没有遗漏什么?我是否正确使用了ConstructUsing?
如果您能提供帮助,将不胜感激。