如果基本配置文件已加载,似乎有用的AutoMapper-Profile属性IncludeBase仅起作用。这是一个理论上的例子:
CreateMap<BusinessObject, MainObject>()
// Emitted
CreateMap<BusinessObject, Child1>()
.IncludeBase<BusinessObject, MainObject>()
// Emitted, more properties
这个将按预期工作,Child1将所有MainObject属性映射。 现在,另一方面,这不起作用:
CreateMap<BusinessObject, Child1>()
.IncludeBase<BusinessObject, MainObject>()
// Emitted, more properties
CreateMap<BusinessObject, MainObject>()
// Emitted
只有Child1配置文件中直接定义的属性才能正确映射。
我为AutoMapper使用的所有用法都包括通过Reflection动态加载Profiles。这种行为显然会阻止这种情况,因为我无法确定,配置文件的加载顺序。这是真的有意还是我在这里用错了什么?
答案 0 :(得分:1)
您刚刚找到了我将AutoMapper移动到基于实例和只读配置的原因。你碰到这样的bug。在AutoMapper 5.0中,所有这些都是固定的,因为我将配置移动到两步过程,收集所有配置,然后以正确的顺序应用它。
这是一个错误,已在5.0中修复。