c# - 如何使用 AutoMapper 9.0 在 IValueResolver 中执行自定义映射
问题描述
我正在尝试IValueResolver
使用 IoC AutoMapper 样式创建具有嵌套映射但无法将IMapper
实例注入解析器的自定义。
下面是解析器的原始版本,其构造函数仍包含 DI IMapper 参数。
有什么方法可以Mapper.Map()
在解析器中使用嵌套调用,还是有另一种方法可以达到相同的结果?
不确定这里有多少信息有帮助,但我有多个配置文件添加到Startup.ConfigureServices()
usingservices.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
谢谢!
public class PlannedTrainingExerciseDtosResolver : IValueResolver<TrainingPlan, TrainingPlanDto, ICollection<PlannedTrainingExerciseDto>>
{
private Mapper Mapper { get; }
public PlannedTrainingExerciseDtosResolver(IMapper mapper)
{
Mapper = mapper;
}
public ICollection<PlannedTrainingExerciseDto> Resolve(TrainingPlan source, TrainingPlanDto destination, ICollection<PlannedTrainingExerciseDto> destMember, ResolutionContext context)
{
var plannedTrainingExercises = new List<PlannedTrainingExerciseDto>();
foreach (var trainingPlanObjective in source.TrainingPlanObjectives)
{
if (trainingPlanObjective.PlannedTrainingExercises != null)
{
foreach (var exercise in trainingPlanObjective.PlannedTrainingExercises)
{
var exerciseDto = Mapper.Map<PlannedTrainingExerciseDto>(exercise);
exerciseDto.Objective = Mapper.Map<ObjectiveDto>(trainingPlanObjective.Objective);
plannedTrainingExercises.Add(exerciseDto);
}
}
}
return plannedTrainingExercises;
}
}
解决方案
推荐阅读
- python - 如何在 streamlit 中自定义数据框的可视化
- apache - 防止 Apache2 重定向到不同的端口
- javascript - 如何在 React 中将键盘事件与 div 元素绑定
- flutter - 预期类型为“int”的值,但在尝试从颤振中的 json 获取数据时得到类型为“String”的值之一
- android - 安卓设备同时连接经典蓝牙和BLE
- nginx - FFmpeg 连接 txt 文件
- firebase - React Native:在文本输入字段中显示用户数据
- qr-code - YOURLS 是否允许您使用 API 生成 QR 码?
- php - Windows IIS Web 服务器上的随机 Dropzone 错误
- javascript - 在 php 中从 iframe 编辑主页变量值