C# 实体映射,对象映射框架——Mapster

提到映射大家可能会想到AutoMapper,在 .NET 领域的开发者中有非常高的知名度和使用率。而今天要提的是另外一款高性能对象映射框架:Mapster——它轻巧便捷,功能也非常强大,关键是性能很高——有可能是.NET领域性能最好的。

与 AutoMapper 相比,Mapster 在速度和内存占用方面表现更加优秀 ,下面是官方给出的稍早版本 6.0 的性能对比表:
在这里插入图片描述
从表中我们可以看出,即使在不使用高性能组件的情况下它的性能都可以获得4倍于AutoMapper,却只需要1/3左右的内存占用,而在使用Roslyn Compiler、FEC (FastExpressionCompiler)、Code generation等组件后可以再进一步提升2-3倍的性能。Code generation 方式几乎就是这个事儿极限了。你还有更快的手段吗?

使用方法

在包控制管理器安装Mapster
在这里插入图片描述
对象映射最多的场景就是两个实体定义的属性名是重叠对应的,那么此时的基本用法就非常简单:

 using Mapster;
 
T需要映射成的实体 映射后= 原有实体.Adapt<T需要映射成的实体>();

自定义映射关系


public class bb{
public string userName{get;set;}
public string role{get;set;}
}

public class aa{
public string userName{get;set;}
public string[] role{get;set;}
}

bb b=new bb{userName="admin",role="1,2,3"}
//这样我们就可以把bb的参数进行处理 映射成aa想要的类型
TypeAdapterConfig<bb, aa>.NewConfig()
.Map(dest => dest.role, src => src.role.Split(',', StringSplitOptions.None))
.Map(dest => dest.name, src => src.name.ToLower());

//相反也可以将bb想要的类型进行处理
TypeAdapterConfig<aa, bb>.NewConfig().Map(m=>m.role,b=>string.Join(',',b.role));

aa outPut = bb.Adapt<aa>();

其它更多骚操作
https://github.com/MapsterMapper/Mapster ,如果说英文阅读有点困难,可以到 https://github.com/rivenfx/Mapster-docs 看热心网友做到中文翻译版。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值