Automapper 没有使用扩展方法进行映射

Automapper isn't using extension methods for mapping

我有这样的自动映射器设置

services.AddAutoMapper(typeof(MappingAssembly).Assembly, typeof(AssemblyWithExtensionMethods).Assembly);

在我的一份个人资料中

public class UserModuleMapper : Profile {
  public UserModuleMapper() {
    IncludeSourceExtensionMethods(typeof(UserGroup));
    CreateMap<UserGroup, UserGroupDto>(MemberList.Destination);              
  }
}

并且我已经将扩展方法定义为

public static List<string> GetRoleNames(this UserGroup group) {
  return group.UserGroupRoles.Select(x => x.Role.Name).ToList();
}

我在 DTO 上有一个 属性 定义为

public List<string> RoleNames { get; set; }

根据自动映射器文档,我做了以下假设:

  1. IncludeSourceExtensionMethods,映射时包含扩展方法
  2. 映射时它还会查找前缀为 Get
  3. 的方法

但是当我验证自动映射器扩展时,我收到未映射的错误 属性

Unmapped properties: RoleNames

我的配置中缺少什么,automapper应该检测扩展方法。

我已尝试 (a) 从方法名称中删除 GET,但仍然无效 (b) 在 IncludeSourceExtensionMethods 之前或之后移动 CreateMap 以查看顺序是否重要,但是 none 有帮助。

发布问题几分钟后,我通过仔细查看 Github

上的 this issue 得到了答案

问题出在以下语句

      IncludeSourceExtensionMethods(typeof(UserGroup));

这里提到的类型应该是后缀class

      IncludeSourceExtensionMethods(typeof(UserGroupExtensions));

不删除问题,因为它可能对将来的人有所帮助。