dotnetcore / osharp

OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。
Apache License 2.0
2.79k stars 752 forks source link

automapper的如果有MapFromAttribute和实现IAutoMapperConfiguration,后者会配置会失效 #109

Closed s641135196 closed 3 years ago

s641135196 commented 5 years ago

描述一下BUG

 [MapFrom(typeof(Target))]
 public class Source {  }

 public class AutoMapperConfiguration : IAutoMapperConfiguration
    {
        public void CreateMaps(MapperConfigurationExpression mapper)
        {
            mapper.CreateMap<Source, Target>()
                .ForMember(source=> source.UpdateUserName,   target=> target.MapFrom(t=> t.LastUpdateUser.NickName));
       }

这会导致 mapper.CreateMap<Source, Target>()创建的映射失效,需要去掉 [MapFrom(typeof(Target))]才行。

正常行为 两者同时存时,配置的映射也应该正常。

使用的版本 提问题时的最新版本 1.1.0

gmf520 commented 3 years ago

已修复,如果两者都配置,优先使用IAutoMapperConfiguration中的复杂映射

gmf520 commented 3 years ago

由于IAutoMapperConfiguration的优先级比Profile的方式低,无法提升IAutoMapperConfiguration的优先级 统一改为使用Profile的方式来管理对象映射配置 更改如下: