AutoMapper:IncludeBase 仅在加载基本配置文件时才有效

本文关键字:配置文件 有效 加载 IncludeBase AutoMapper | 更新日期: 2023-09-27 18:36:54

似乎有用的AutoMapper-Profile Property 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:IncludeBase 仅在加载基本配置文件时才有效

您刚刚了解了我将自动映射器移至基于实例和只读配置的原因。你遇到了这样的错误。在AutoMapper 5.0中,所有这些都是固定的,因为我将配置移动到一个两步过程,收集所有配置,然后以正确的顺序应用它。

这是一个错误,在 5.0 中修复。