AutoMapper:IncludeBase 仅在加载 Base-Profile 时有效
AutoMapper: IncludeBase only working if the Base-Profile is loaded
似乎有用的 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 的所有使用都包括通过反射动态加载配置文件。这种行为显然会阻止它,因为我不能确定加载配置文件的顺序。这是真的有意还是我用错了什么?
您刚刚明白了我将 AutoMapper 移动到基于实例和只读配置的原因。你遇到这样的错误。在 AutoMapper 5.0 中,所有这些都已修复,因为我将配置移动到一个两步过程,收集所有配置,然后以正确的顺序应用它。
这是一个错误,已在 5.0 中修复。
似乎有用的 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 的所有使用都包括通过反射动态加载配置文件。这种行为显然会阻止它,因为我不能确定加载配置文件的顺序。这是真的有意还是我用错了什么?
您刚刚明白了我将 AutoMapper 移动到基于实例和只读配置的原因。你遇到这样的错误。在 AutoMapper 5.0 中,所有这些都已修复,因为我将配置移动到一个两步过程,收集所有配置,然后以正确的顺序应用它。
这是一个错误,已在 5.0 中修复。