You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AutoMapper自动映射Tuple<User,string>至继承User的UserEx类

解决方案

由于UserEx继承自User,AutoMapper会自动处理父类到子类的属性映射,不需要手动逐个配置User的字段。你可以通过以下两种方式实现自动映射Item1到UserEx:

方法1:使用ForAllMembers设置默认映射源

通过ForAllMembers指定所有成员默认从Item1映射,再单独覆盖extraData的映射规则:

profile.CreateMap<Tuple<User, string>, UserEx>()
    .ForAllMembers(opt => opt.MapFrom(src => src.Item1))
    .ForMember(d => d.extraData, opt => opt.MapFrom(src => src.Item2));

方法2:利用已有映射先构造UserEx实例

先通过AutoMapper的默认映射将Item1转换为UserEx,再设置extraData:

profile.CreateMap<Tuple<User, string>, UserEx>()
    .ConstructUsing((src, context) => context.Mapper.Map<UserEx>(src.Item1))
    .ForMember(d => d.extraData, opt => opt.MapFrom(src => src.Item2));

为什么你的IncludeMembers尝试无效?

IncludeMembers的作用是将源对象的某个成员的属性扁平化到目标对象中,适用于目标对象包含该成员的属性但并非继承关系的场景。而这里UserEx是User的子类,AutoMapper的继承映射逻辑和IncludeMembers的扁平化逻辑不匹配,因此无法生效。

内容的提问来源于stack exchange,提问作者Sam Carleton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:46:10