当前位置:   article > 正文

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

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需要映射成的实体>();
  • 1
  • 2
  • 3

自定义映射关系


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>();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/253646?site
推荐阅读
相关标签
  

闽ICP备14008679号