Automapper和类层次结构
问题描述:
鉴于以下来源:Automapper和类层次结构
public class SourceBase { public string TheString { get; set; } }
public class SourceDerived : SourceBase { }
和目标:
public class DestBase { public string MyString { get; set; } }
public class DestDerived : DestBase { }
而且这种映射:
CreateMap<SourceBase, DestBase>()
.ForMember(dest => dest.MyString, o => o.MapFrom(x => x.TheString))
.Include<SourceDerived, DestDerived>();
CreateMap<SourceDerived, DestDerived>();
Mapper.AssertConfigurationIsValid(); // Exception is thrown here
然而,这给出了一个映射错误说MyString的ISN没有映射到DestDerived。是什么赋予了?我是否真的需要在所有派生类型中重复基类属性的映射(我在我的实际代码中有多个子类)。
编辑:
确切的例外是上DestDerived以下1个性能无法映射:MyString中。添加自定义映射表达式,忽略或重命名DestDerived上的属性。
答
请查看这篇文章: http://groups.google.com/group/automapper-users/browse_thread/thread/69ba514a521e9599
它工作正常,如果您在下面的代码(使用AutoMapper 1.1.0.188)宣布它像。我不确定这是否能解决您的问题。
var result = Mapper.CreateMap<SourceBase, DestBase>()
.ForMember(dest => dest.MyString, o => o.MapFrom(x => x.TheString));
//.Include<SourceDerived, DestDerived>();
Mapper.CreateMap<SourceDerived, DestDerived>();
var source = new SourceDerived();
var destDerived = new DestDerived();
source.TheString = "teststring";
var mapResult = Mapper.Map<SourceBase, DestBase>(source, destDerived).MyString;
Console.WriteLine(mapResult);
什么是确切的错误? – 2011-05-09 20:46:19