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.pswp.cn/bicheng/19616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19616.shtml
英文地址,請注明出處:http://en.pswp.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 中進行跨庫查詢。禁…