就在昨天,我发布了这个:
现在我正在尝试做@jimmy-bogard 在他的回答中所说的,但不幸的是仍然没有成功。基本成员不会被映射。
吉米说:
但是,您可以使用 ConstructUsing 构建初始目标对象。或自定义 AfterMap,这也是继承的。只是没有转换使用。
这是我的新代码。
/* 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?
任何帮助,将不胜感激。