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

如何使用Mapperly生成含泛型类型的对象自动映射器?

Mapperly 泛型对象映射实现方案

问题场景

现有一对泛型类型定义:

public class Email<T>
{
   public T message {get; set;}
   public string SendTo {get; set;}
}

public class EmailDto<T>
{
   public T message {get; set;}
   public string SendTo {get; set;}
}

尝试创建泛型对象映射方法时出现运行异常,原写法未在方法上声明泛型参数:

// 错误写法:未显式声明方法的泛型参数<T>
public partial class MapperlyMapper
{
    public partial Email<T> Map(EmailDto<T> sendEmailDto);
}

正确实现方式

需在映射方法上显式声明泛型参数<T>,Mapperly会自动处理泛型属性的映射逻辑:

public partial class MapperlyMapper
{
    public partial Email<T> Map<T>(EmailDto<T> sendEmailDto);
}

Mapperly会为每个实际使用的具体泛型类型(如Email<string>与EmailDto<string>)自动生成对应映射代码,无需手动编写属性映射逻辑。

Mapperly 泛型映射官方文档翻译

泛型映射

Mapperly支持泛型类型的映射,可通过以下方式配置:

  • 泛型映射方法:在映射方法上声明泛型参数,Mapperly会自动生成适用于所有合法具体类型参数的映射逻辑,只要类型参数间的映射关系已配置或可自动推断。
  • 泛型类型映射:针对泛型类型定义映射规则(如List<T>与IEnumerable<T>的映射),Mapperly会处理任意T类型的集合映射,前提是T的映射规则已配置。
  • 约束泛型参数:可对泛型参数添加类型约束,Mapperly会识别约束并生成符合要求的映射代码,例如限制T为引用类型或实现特定接口。

对于泛型属性,只要属性的泛型类型间存在有效映射(或类型兼容),Mapperly会自动完成属性映射,无需额外配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:09:58