c# - Automapper 从 ISource => IDest 映射通用属性,然后指定剩余的映射
问题描述
我的情况是我必须将相关对象的名称合并到name
许多不同模型上的属性。这些模型具有需要自己配置的实现。
我试过的是:
ProjectFrom.cs
public interface IProjectFrom {
int Id { get; set; }
}
public class ProjectFromConcreteA : IProjectFrom {
public int Id { get; set; }
public string SomeProp { get; set; }
}
ProjectTo.cs
public interface IProjectTo {
string Name { get; set; }
}
public class ProjectToConcreteA : IProjectTo {
public string Name { get; set; }
public string SomeProp { get; set; }
}
配置文件.cs
CreateMap<IProjectFrom, IProjectTo>()
.ForMember(projection => projection.Name, expression => expression.ResolveUsing<ProjectionResolver>());
CreateMap<ProjectFromConcreteA, ProjectToConcreteA>()
.ForMember(concreteTo => concreteTo.SomeProp, expression => expression.MapFrom(concreteFrom => concreteFrom.SomeProp));
投影解析器.cs
public class ProjectionResolver : IValueResolver<IProjectFrom, IProjectTo, string>
{
private readonly IDependency _dependency;
public ProjectionResolver(IDependency dependency)
{
_dependency = dependency;
}
public string Resolve(IProjectFrom source, IProjectTo destination,
string destMember, ResolutionContext context)
{
return _dependency.GetStringFor(source.Id);
}
}
但是,这似乎不起作用,因为我的解析器从未使用过。我错过了一步吗?
解决方案
推荐阅读
- android - 房间数据库多对多关系
- php - 在php中经过一段时间后我无法隐藏警报,然后我无法在php中添加onclick函数
- python - 使用 Python 将 YAML 文件转换为 XLSX
- java - 运行我的颤振项目时收到此错误消息
- python - 在 python 链表中实现 __next__()
- python - 在 Heroku Flask 应用程序中将文件上传到 IPFS
- postgresql - postgres:未找到命令,但已满足要求
- security - 如何从管道中的 truffleHog 扫描中排除单个秘密?
- h2 - 为 Corda 节点打开多个 H2 控制台
- r - 基于数据框的其他列的列行连接