automapper - Automapper 没有使用扩展方法进行映射
问题描述
我有这样的自动映射器设置
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; }
根据 automapper 文档,我做了以下假设:
- IncludeSourceExtensionMethods,包括映射时的扩展方法
- 在映射时,它还将寻找带有前缀的方法
Get
但是当我验证自动映射器扩展时,我收到未映射属性的错误
未映射的属性:RoleNames
我的配置中缺少什么,automapper
应该检测扩展方法。
我已经尝试(a)从方法名称中删除 GET ,但仍然不起作用(b)CreateMap
在 the 之前或之后移动IncludeSourceExtensionMethods
以查看序列是否重要,但没有任何帮助。
解决方案
在发布问题后的几分钟内,我通过在 Github 上仔细查看这个问题得到了答案
问题在于以下声明
IncludeSourceExtensionMethods(typeof(UserGroup));
这里提到的类型应该是扩展类
IncludeSourceExtensionMethods(typeof(UserGroupExtensions));
不删除问题,因为它可能会在将来帮助某人。
推荐阅读
- javascript - 具有特殊 id 的 Vue-js 调用对象
- html - 如何在 swift 中设置超时以尝试捕获 html 代码?
- javascript - 如何检测 sessionStorage 是否会死?
- flutter - 更改切换按钮颤动的图标
- c# - syncfusion DataGridView C#中的彩色文本搜索
- javascript - 防止 Angular 中 .push() 中的元素 id 重复
- python - Python检索文件复制位置的文件路径
- react-native - React-Native 导航无法解析模块
- python - “检查是否断开进程的长时间运行连接”
- python - 使用python解析.xml文件:搜索和复制相关数据