Closed s641135196 closed 3 years ago
已修复,如果两者都配置,优先使用IAutoMapperConfiguration
中的复杂映射
由于IAutoMapperConfiguration
的优先级比Profile
的方式低,无法提升IAutoMapperConfiguration
的优先级
统一改为使用Profile
的方式来管理对象映射配置
更改如下:
IAutoMapperConfiguration
IMapTuple
增加Order
属性,用于配置多个Profile的执行顺序IMapTuple
的实现基类AutoMapperTupleBase
,其他模块的对象映射均以实现此基类为准MapTupleProfile
更名为MapFromAndMapToProfile
,Order默认为-9999,优先执行[MapFrom], [MapTo]的映射IAutoMapperConfiguration
的实现类改为实现基类AutoMapperTupleBase
,Order默认为0,其配置可以覆盖[MapFrom], [MapTo]中的配置
一个AutoMapperTupleBase
实现类的示例
old:
public class AutoMapperConfiguration : IAutoMapperConfiguration
{
/// <summary>
/// 创建对象映射
/// </summary>
/// <param name="mapper">映射配置表达</param>
public void CreateMaps(MapperConfigurationExpression mapper)
{
mapper.CreateMap<Role, RoleNode>().ForMember(rn => rn.RoleId, opt => opt.MapFrom(r => r.Id))
.ForMember(rn => rn.RoleName, opt => opt.MapFrom(r => r.Name));
}
}
new:
public class AutoMapperConfiguration : AutoMapperTupleBase
{
/// <summary>
/// 创建对象映射
/// </summary>
public override void CreateMap()
{
CreateMap<Role, RoleNode>().ForMember(rn => rn.RoleId, opt => opt.MapFrom(r => r.Id))
.ForMember(rn => rn.RoleName, opt => opt.MapFrom(r => r.Name));
}
}
描述一下BUG
这会导致 mapper.CreateMap<Source, Target>()创建的映射失效,需要去掉 [MapFrom(typeof(Target))]才行。
正常行为 两者同时存时,配置的映射也应该正常。
使用的版本 提问题时的最新版本 1.1.0