C#中使用Mapster

Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。
多个映射框架的性能对比:
在这里插入图片描述

第一步安装Mapster

在这里插入图片描述

使用方法

public class Test
{public string name { get; set; }public string sex { get; set; }public string[] interest { get; set; }
}public class Test1
{public string name { get; set; }public string sex { get; set; }public string address { get; set; }public string interest { get; set; }
}// 创建源对象var source = new Test{name = "张三",sex = "男",interest =new string[]{"唱","跳","rap"}};//这里我们可以做一些自定义映射  把数组类型字段处理成字符串TypeAdapterConfig<Test, Test1>.NewConfig().Map(m => m.interest , b => string.Join(',', b.interest )); // 自定义映射规则// 执行映射var test1Model= source.Adapt<Test1>();// 输出结果Console.WriteLine(test1Model.name ); // 输出:"张三"Console.WriteLine(test1Model.interest ); // 输出:"唱,跳,rap"

全局配置映射

如果我们每次在使用映射时都需要对一些字段进行特殊处理,那么会在每个使用的地方编写映射。
我们可以配置一个全局的通用映射关系,在程序启动时就定义映射关系。

首先编写一个配置文件

public class MapsterProfile
{public static void Configure(){// 设置全局配置  TypeAdapterConfig.GlobalSettings.Default.NameMatchingStrategy(NameMatchingStrategy.Flexible) // 设置属性名称匹配策略为灵活匹配  .PreserveReference(true); // 保留引用关系  //特定类型之间的映射配置TypeAdapterConfig<Test, Test1>.NewConfig().Map(m => m.interest , b => string.Join(',', b.interest )); // 自定义映射规则// 你可以继续为其他类型对添加配置...  }
}

然后在程序启动时调用配置方法
Program.cs文件

var builder = WebApplication.CreateBuilder(args);  
// 添加其他服务和中间件...  // 配置Mapster映射  
MapsterProfile.Configure();  var app = builder.Build();  
// 配置HTTP请求管道...  
app.Run();

然后在程序中如果想使用,可以直接

// 创建源对象var source = new Test{name = "张三",sex = "男",interest =new string[]{"唱","跳","rap"}};
var test1Model= source.Adapt<Test1>();//一句话就可以搞定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言数据结构(超详细讲解)| 二叉树的实现

二叉树 引言 在计算机科学中&#xff0c;数据结构是算法设计的基石&#xff0c;而二叉树&#xff08;Binary Tree&#xff09;作为一种基础且广泛应用的数据结构&#xff0c;具有重要的地位。无论是在数据库索引、内存管理&#xff0c;还是在编译器实现中&#xff0c;二叉树都…

记录Win11安装打印机驱动过程

1. 首先下载打印机对应型号的驱动 可以从这里下载&#xff1a;打印机驱动,打印机驱动下载 - 打印机驱动网 2. 下载 3. 打开控制面板-->设备和打印机 找到目标打印机添加设备即可 新增打印纸张尺寸

B站稿件生产平台高可用建设分享

背景 B站作为国内领先的内容分享平台&#xff0c;其核心功能之一便是支持UP主们创作并分享各类视频内容。UP主稿件系统作为B站内容生产的关键环节&#xff0c;承担着从内容创作到发布的全过程管理。为了满足不同创作者的需求&#xff0c;B站提供了多种投稿渠道&#xff0c;包括…

方差分析的七种类型

方差分析&#xff08;ANOVA&#xff09;是一种用于检验两个以上样本均数差别的显著性统计方法。根据不同的研究设计和数据类型&#xff0c;方差分析可以分为以下7种类型。 一、单因素方差分析 ①单因素方差分析说明 单因素方差分析用于研究一个定类数据&#xff08;自变量&am…

【原创教程】MES服务器与成品打标机控制说明

1 实现的功能及应用的场合 MES即制造执行系统(manufacturing execution system,简称MES),即在加强MRP计划的执行功能,把MRP计划同车间作业现场控制,通过执行系统联系起来。 MES是一个生产管理智能化的一个系统,是用于生产时记录数据、产量等信息的智能管理系统。 该项…

SpockMockStatic方法

SpockMockStatic方法 参考: https://blog.csdn.net/knighttools/article/details/44630975 ‍ static方法 import com.meituan.mafka.client.producer.IProducerProcessor; import com.meituan.mdp.langmodel.api.message.AssistantMessage; import com.sankuai.gaigc.arrang…

文件批量重命名001到100如何操作?这几个文件改名小技巧学起来

文件批量重命名001到100怎么操作&#xff1f;作为打工一族&#xff0c;每天都需要跟很多文件打交道&#xff0c;有时文件太多了&#xff0c;查找起来像是大海捞针&#xff0c;特别是图片文件。这个时候我们就需要对大量文件进行整理和排序&#xff0c;这样有助于提高我们的工作…

微信小程序 自定义 tabBar

自定义 tabBar | 微信开放文档 本文案例使用的Taro 非原生微信小程序 使用流程 1. 配置信息 在 app.json 中的 tabBar 项指定 custom 字段&#xff0c;同时其余 tabBar 相关配置也补充完整。所有 tab 页的 json 里需声明 usingComponents 项&#xff0c;也可以在 app.json 全局…

Java语言的应用场景

1、开发移动应用程序 例如&#xff1a;Android。 2、开发服务应用程序&#xff0c;搭建WEB界面。 例如&#xff1a;Servlet、JSP。 3、开发应用服务器。 例如Tomcat。 4、开发网络通信程序。 5、开发图形化界面桌面端。 Java支持用AWT、Swing、JavaFX三种包来开发图形化界面…

电脑提示缺少vcruntime140_1.dll的解决方法,总结7种有效方法

vcruntime140_1.dll是Microsoft Visual C 2015运行时库的一部分&#xff0c;它为使用Visual Studio 2015开发的应用程序提供了必要的运行时组件。该文件支持C程序的执行&#xff0c;包括内存管理、输入输出操作以及多线程功能等。缺失或损坏此文件可能导致应用程序无法启动或运…

广告联盟四大家

国内四大广告承接商&#xff1a;①抖音旗下-穿山甲②快手旗下-快手联盟③百度旗下-百青藤④腾讯旗下-优量汇 我们目前在互联网上能看到的所有广告都是由他们发放的&#xff0c;在其中我们打小游戏复活看广告&#xff0c;获得道具看广告&#xff0c;看剧看广告&#xff0c;这…

数据库的隔离级别和索引使用

先看一下隔离级别&#xff0c; 隔离级别首先要明确 &#xff0c;隔离的越重&#xff0c;那么自然会失去效率&#xff0c;为什么有这么多的隔离级别&#xff0c;其实就是平衡业务关系尽可能的提高效率。 下面看下隔离级别和介绍&#xff1a; 读未提交是指&#xff1a;一个事务…

Oracle SQL详解

Oracle SQL是一种用于管理和操作Oracle数据库的编程语言。以下是一些基本的Oracle SQL语法和建表建用户的详解。 创建用户 在Oracle中&#xff0c;创建用户通常需要具有足够权限的用户&#xff08;通常是具有DBA角色的用户&#xff09;。以下是一个创建用户的例子&#xff1a;…

基于词频统计的聚类算法(kmeans)

基于词频统计的聚类算法&#xff08;kmeans&#xff09; 数据集是三个政府报告文件&#xff0c;这里就不做详细描述了&#xff0c;就是简单的txt文件。 实验过程主要分为如下几步&#xff1a; 1.读取数据并进行停用词过滤 2.统计词频 3.基于三篇文章词频统计的层次聚类 4.基于…

废品回收小程序怎么做?有哪些核心功能?

废品回收行业正逐步走向高质量发展的道路。在国家政策的推动下&#xff0c;再生资源市场需求旺盛&#xff0c;行业内部竞争格局逐渐明朗。 随着互联网技术的发展&#xff0c;"互联网回收"成为废品回收行业的一个新趋势。通过微信小程序这种线上平台&#xff0c;用户…

数据可视化在智慧园区中的核心价值解析

数据可视化在智慧园区中发挥着至关重要的价值。智慧园区是一种基于物联网、大数据、云计算等先进技术的现代化管理模式&#xff0c;旨在通过智能化手段提升园区的管理效率、服务水平和用户体验。而数据可视化作为数据处理和展示的重要工具&#xff0c;正是智慧园区实现这些目标…

BUG: VS Code C++输出中文乱码

BUG: VS Code C输出中文乱码 环境 Windows 11 VS Code 编辑器详情 在Windows 使用 cout 函数输出中文时出现乱码 问题的原因在cmd的显示编码和c程序编码的不同。cmd默认的是gbk编码&#xff0c;而VS Code 软件的CMD终端默认是utf-8编码&#xff0c;因而在输出中文文本时会出…

Flutter 中的 SliverCrossAxisExpanded 小部件:全面指南

Flutter 中的 SliverCrossAxisExpanded 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中&#xff0c;SliverCrossAxisExpanded 是一个…

Ubuntu server 24 安装配置 snort3 3.2.1.0 网络入侵检测防御系统 配置注册规则集

一 下载并安装源代码 地址:https://github.com/snort3/snort3/releases #下载&#xff0c;解压 wget https://github.com/snort3/snort3/archive/refs/tags/3.2.1.0.tar.gz tar zxvf 3.2.1.0.tar.gz 二 安装软件依赖包 1 安装依赖包 sudo apt update sudo apt install…

Bytebase 2.18.0 - 支持创建用户组

&#x1f680; 新功能 支持创建用户组。支持 BigQuery。支持 SQL Server 库表同步。支持 MongoDB 集群并支持直接连接到集群中的节点。支持 SQL Server 和 Oracle 显示工单任务执行日志&#xff0c;如影响行数或错误。添加 SQL 审核规则: 禁止在 SQL Server 中进行跨库查询。禁…