2023年7月3日 星期一

使用 Mapster 資料轉換

之前都用 AutoMapper 套件當作兩個物件的資料轉換,但使用起來稍嫌麻煩,偶然發現Mapster 套件,

後續做了點實作,直覺使用上簡潔一些些,效能似乎也是不錯,筆記一下



可以直接透過 Nuget 安裝 Mapster 套件,目前也有支援 .net core 以及更高的.NET 版本



安裝好之後直接來看怎麼使用


定義兩個類別 UserDto、User,其中 CreatedAt 欄位的型別不一樣,一個是 DateTime ,另一個則是 string


以下示範將100筆 User 資料轉換至 Dto,其中可以使用 Adapt 擴充方法直接轉換,如下圖



將較於 AutoMapper ,一般簡單情境時可以使用 Adapt() 擴充方法,而AutoMapper 則需要先使

MapperConfiguration 建立 mapper 物件,如下圖



然後再使用 Map()方法指定轉換,方法內的參數是來源,如下圖




若我們需要客製化轉換,則可以使用 TypeAdapterConfig<Source,Dest>() 來設定,如下圖

簡單客製化名稱前面加入 「cc - 」



若要在 ASP.Net Core DI 使用,需要安裝 Dependency Injection 套件


接著設定 Startup.cs


或者也可以這樣寫


或是使用 TypeAdapterConfig.GlobalSettings



記得加上 namespace


Controller 設定,建構式注入 mapper,方法 Get()中,若有客製化內容可以使用 TypeAdapterConfig,

再呼叫轉換 Adapt() 方法



使用 IRegister 管理轉換,類似 AutoMapper 的 Profile,使用情境如下

建立一個 ClassARegister 類別並且繼承 IRegister,內容則是實作轉換


而Controller 的 Action 回歸單純的呼叫 Adapt() 方法即可



Startup.cs 設定


輸出結果



官方提出效能表,參考一下





【參考】

沒有留言:

張貼留言