2016-03-01 26 views
0

如果基础配置文件已经加载,看起来像有用的AutoMapper-Profile属性IncludeBase只能工作。这里有一个理论的例子:AutoMapper: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的所有用法都包括通过反射动态加载配置文件。这种行为显然会停止,因为我不能确定,配置文件加载的顺序。这是真的打算还是我在这里使用错误?

回答

1

你刚刚达到了将AutoMapper移动到基于实例和只读配置的原因。你碰到这样的错误。在AutoMapper 5.0中,所有这些都是固定的,因为我将配置移到了两个步骤的过程中,收集所有配置,然后按正确的顺序应用它。

这是一个bug,在5.0中修复。

+0

感谢您的验证,没有什么比未知更糟糕 –