.NET 幫助

Automapper C#(對開發人員的作用原理)

發佈 2024年1月4日
分享:

Automapper 是一個多功能且強大的 C# 庫,旨在促進物件到物件的映射,使在複雜物件模型之間轉移數據變得更簡單且更易於維護。 在本文中,我們將探討 Automapper 如何有效地映射屬性、展平複雜的物件模型,並處理各種類型的物件,如用戶領域對象和資料傳輸對象。

Automapper介紹

C#中的Automapper是一個物件-物件映射器,一種簡化不同物件類型之間數據轉換和傳輸的工具。這在涉及數據實體及其轉換為數據傳輸物件的情境中特別有用。(DTOs).

Automapper 的關鍵功能

簡化程式碼:Automapper 通過自動化屬性的映射,大幅減少手動編碼的需求,從而防止錯誤並節省時間。

映射配置的靈活性:Automapper 允許詳細自訂映射配置,滿足各種映射情境的需求。

效能效率:該庫被設計用來處理大型且複雜的物件模型,而不會帶來顯著的效能負擔。

開始使用Automapper

要使用Automapper,首先必須透過套件管理器控制台進行安裝,這是開發環境的一個元件,方便軟體套件的管理。

透過套件管理器主控台安裝

您可以透過在套件管理器主控台中執行一個簡單命令,輕鬆地將Automapper安裝到您的專案中:

Install-Package IronPdf

設定基本映射配置

在使用Automapper的基本步驟是定義映射配置。 這涉及指定輸入對象的處理方式(來源)屬性應轉移到輸出對象(目的地).

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<SourceClass, DestinationClass>();
});
IMapper mapper = config.CreateMapper();
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<SourceClass, DestinationClass>();
});
IMapper mapper = config.CreateMapper();
Dim config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of SourceClass, DestinationClass)()
End Sub)
Dim mapper As IMapper = config.CreateMapper()
VB   C#

使用Automapper的高級映射技術

Automapper 的功能遠超簡單的屬性對屬性映射。 它可以熟练处理更复杂的情境。

扁平化複雜物件模型

Automapper 的一個優勢是其可以將複雜的物件模型扁平化。 此功能在處理嵌套物件時特別有用,可將這些嵌套屬性映射到平坦的目標類結構。

多功能物件類型處理

Automapper 能夠熟練地在各種物件類型之間進行映射,包括使用者領域物件、DTOs,甚至是視圖模型,為不同的資料傳輸需求提供多功能的解決方案。

實際使用範例

為了更好地了解Automapper的實用性,讓我們來探索一些實際的例子。

範例 1:簡單映射

考慮一個情境,我們需要將使用者實體的屬性映射到使用者 DTO:

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
public class UserDTO
{
    public string FullName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<User, UserDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName));
});
IMapper mapper = config.CreateMapper();
public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
public class UserDTO
{
    public string FullName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<User, UserDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName));
});
IMapper mapper = config.CreateMapper();
Public Class User
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Address() As String
	Public Property City() As String
End Class
Public Class UserDTO
	Public Property FullName() As String
	Public Property Address() As String
	Public Property City() As String
End Class
' Mapping Configuration
Private config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of User, UserDTO)().ForMember(Function(dest) dest.FullName, Function(opt) opt.MapFrom(Function(src) src.FirstName & " " & src.LastName))
End Sub)
Private mapper As IMapper = config.CreateMapper()
VB   C#

範例 2:使用複雜物件進行進階映射

在較複雜的情況下,我們將具有巢狀使用者詳細資訊的訂單物件對應到簡化的訂單 DTO:

public class Order
{
    public User OrderedBy { get; set; }
    // Other properties...
}
public class OrderDTO
{
    public string FullName { get; set; }
    // Other properties...
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<Order, OrderDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.OrderedBy.FirstName + " " + src.OrderedBy.LastName));
});
IMapper mapper = config.CreateMapper();
public class Order
{
    public User OrderedBy { get; set; }
    // Other properties...
}
public class OrderDTO
{
    public string FullName { get; set; }
    // Other properties...
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<Order, OrderDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.OrderedBy.FirstName + " " + src.OrderedBy.LastName));
});
IMapper mapper = config.CreateMapper();
Public Class Order
	Public Property OrderedBy() As User
	' Other properties...
End Class
Public Class OrderDTO
	Public Property FullName() As String
	' Other properties...
End Class
' Mapping Configuration
Private config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of Order, OrderDTO)().ForMember(Function(dest) dest.FullName, Function(opt) opt.MapFrom(Function(src) src.OrderedBy.FirstName & " " & src.OrderedBy.LastName))
End Sub)
Private mapper As IMapper = config.CreateMapper()
VB   C#

在版本9.0中,AutoMapper已從靜態API轉變(Mapper.Initialize)到基於實例的API。 此變更增強了靈活性,更適合現代應用程式,特別是那些使用相依注入的應用程式。 如果您使用的是9.0以下版本,則靜態API方法適用。 然而,對於較新版本,建議採用上述示例中的基於實例的 API。

Iron Software 套件概覽

Iron Software 套件 for .NET是一個強大的套件,包含一系列各自具有特定用途的庫。 涵蓋功能包括創建、閱讀和編輯 PDF,將 HTML 轉換為 PDF,以及將圖像處理成多種語言的文本。 此套件滿足各種開發需求,使其成為任何 C# 項目的多功能補充。

Iron Software 套件的關鍵組件

  1. IronPDF 用於 PDF 管理此元件允許開發人員創建、讀取、編輯和簽署PDF文件。 它還提供將 HTML 轉換為 PDF 的功能,這項功能在從基於網路的數據生成報告或文件時特別有用。

    Automapper C#(開發者如何使用):圖1 - IronPDF for .NET:C# PDF庫

    2.IronXL Excel 檔案處理IronXL 可以不需要 Office Interop 即能處理 Excel 文件,簡化數據操作和分析任務。

    Automapper C#(開發人員如何運作):圖2 - IronXL for .NET:C# Excel 庫

  2. IronOCR 用於文本提取:它能從圖片中提取文字,支援多達127種語言,因此對於國際專案而言十分多元化。

    Automapper C#(適用於開發者的工作原理):圖 3 - IronOCR for .NET:C# OCR 庫

    4.IronBarcode 的 QR 和條碼支持一個可以讀取和寫入 QR 碼和條碼的庫,增強庫存管理、追踪和其他相關任務的功能。

    Automapper C#(自動映射器C#)(開發人員操作指南):圖4 - IronBarcode for .NET:C# 條碼庫

與Automapper的互補性

雖然Automapper在C#中在不同對象模型之間映射屬性方面表現出色,Iron Software 的程式庫透過提供用於處理各種數據格式和類型的工具來擴展功能。例如,在使用Automapper將使用者域對象轉換為DTO後,可以使用IronPDF生成PDF格式的綜合報告。 同樣地,使用Automapper提取或轉換的數據可進一步使用IronXL進行Excel文件操作來處理或分析。

結論

Automapper對於 C# 開發人員來說,是一個無價的工具,簡化了物件之間的映射任務。 其在映射屬性、處理複雜對象模型,以及提供可自定義的映射配置方面的強大功能,使其成為高效軟體開發的必備工具。 了解物件模型的複雜性以及如何配置Automapper以符合特定需求,這對於在任何專案中最大化其潛力至關重要。

Iron Software 的Iron Suite提供各種授權選項,包括Iron Software免費試用,以滿足不同項目的需求。 其授權分為 Lite、Plus 和 Professional,滿足不同團隊規模的需求,並提供全面的支持功能。 將此套件與Automapper整合可以大大提升C#項目,增加資料處理和文件操作功能。

< 上一頁
.NET Aspire(它如何為開發者工作)
下一個 >
C# 字串分割(開發人員的運作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >