1.前言 在開發中,我們經常用到對象之間的映射。談到對象映射器,我們比較熟知的肯定是AutoMapper,但很少人會知道Mapster。今天在這裡我們一起探討一下什麼是Mapster?為什麼有了AutoMapper映射器了,還要學習使用Mapster? 2.什麼是Mapster? Mapster是一 ...
1.前言
在開發中,我們經常用到對象之間的映射。談到對象映射器,我們比較熟知的肯定是AutoMapper,但很少人會知道Mapster。今天在這裡我們一起探討一下什麼是Mapster?為什麼有了AutoMapper映射器了,還要學習使用Mapster?
2.什麼是Mapster?
Mapster是一個.NET庫,它提供了一種簡單的方式來實現對象之間的映射。它使用了一個基於約定的自動映射策略,讓你可以輕鬆地將一個對象轉換為另一個對象。
3.安裝
使用NuGet CLI安裝Mapster:
Install-Package Mapster
或者使用.NET core CLI安裝Mapster:
dotnet add package Mapster
4.基本用法
4.1映射到新對象
Mapster創建目標對象並將值映射到該對象。
var destObject = sourceObject.Adapt<Destination>();
4.2映射到現有對象
創建對象後,Mapster會映射到該對象。
sourceObject.Adapt(destObject);
4.3可查詢擴展
Mapster還提供了映射查詢表的擴展。
using (MyDbContext context = new MyDbContext())
{
// 使用Mapster提供的ProjectToType擴展方法減少我們手動Select操作
var destinations = context.Sources.ProjectToType<Destination>().ToList();
// 相對於手工操作
var destinations = context.Sources.Select(c => new Destination {
Id = c.Id,
Name = c.Name,
Surname = c.Surname,
....
})
.ToList();
}
5.為什麼選擇Mapster?
Mapster旨在提高速度和記憶體效率。您可以獲得4倍的性能提升的同時只使用1/3的記憶體的。
測試報告:
6.總結
Mapster是一個非常方便的庫,它可以大大簡化.NET項目中的對象之間的映射工作,並且具有很好的可擴展性和靈活性,更重要的是相比於其它對象映射庫有性能和記憶體效率。這麼好的對象映射庫,您會在項目中使用嗎?
這裡提供下Mapster開源地址:GitHub-MapsterMapper/Mapster:一個快速、有趣且刺激的對象到對象映射器