如何在Mapster配置文件中配置规则,替代手动字段合并的后置处理?
可以在Mapster配置中实现该逻辑
完全可以通过Mapster的映射配置替代手动处理的逻辑,推荐使用AfterMapping钩子来实现——它允许在基础映射完成后执行自定义的字段赋值逻辑,和你当前手动处理的逻辑完全一致。
具体配置示例
在Mapster的全局配置代码中(比如项目启动时的配置类里),添加以下规则:
TypeAdapterConfig<TemplateVM, Template>.NewConfig() .AfterMapping((source, target) => { if (source.TaskAutocreateConditionList != null) { foreach (var condition in source.TaskAutocreateConditionList) { var matchingQuestion = target.Questions.FirstOrDefault(q => q.Id == condition.QuestionId); if (matchingQuestion != null) { matchingQuestion.AutoCreateTaskIfAnswer = (sbyte)condition.AnswerValue; } } } });
使用方式
配置完成后,你原来的扩展方法可以简化为直接调用Mapster的适配方法,无需再写手动处理的代码:
public static Template FromVM(this TemplateVM inputTemplate) { return inputTemplate.Adapt<Template>(); }
注意事项
- 确保Mapster已经正确完成了
TemplateVM.Questions到Template.Questions的基础映射,否则无法找到匹配的Question对象 - 配置中的逻辑和你原手动代码完全一致,包含了null值判断和类型转换,不会改变原有业务逻辑
内容的提问来源于stack exchange,提问作者Kamil Gareev
相关产品推荐
相关产品推荐

