.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 可以熟練地在各種物件類型之間進行映射,包括用戶域物件、DTO 和甚至是視圖模型,為不同的資料傳輸需求提供多用途的解決方案。

實際使用範例

為了更好地了解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 Suite 概述

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

Iron Software 套件的主要組成部分

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

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

  2. IronXLIronXL 能夠在不需要 Office Interop 的情況下處理 Excel 文件,簡化了數據處理和分析任務。

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

  3. IronOCR: 它能從圖像中提取文本,支持多達127種語言,因此對於國際項目具有很高的多功能性。

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

  4. IronBarcode: 一個允許讀寫 QR 碼和條碼的庫,增強了庫存管理、追踪和其他相關任務的能力。

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

與 Automapper 的互補性

Automapper 在 C# 中優秀地完成不同對象模型之間屬性的映射時, Iron Suite 延伸功能,提供處理各種數據格式和類型的工具。例如,在使用Automapper將用戶域對象轉換為DTO後,可以使用IronPDF生成PDF格式的全面報告。同樣,使用Automapper提取或轉換的數據可以進一步使用IronXL進行Excel文件操作的操作或分析。

結論

Automapper 是一個對C#開發人員來說無價的工具,簡化了物件之間的映射任務。它在屬性映射、處理複雜物件模型以及提供可定制的映射配置方面具有強大的能力,使其成為高效軟體開發的必備工具。了解物件模型的錯綜複雜以及如何配置Automapper以滿足特定需求,對於在任何項目中最大程度地發揮其潛力至關重要。

Iron Software 的 Iron Suite 提供各種授權選項,包括 免費試用, 符合不同項目的需求。其許可證分為 Lite、Plus 和 Professional,起價從 $749 開始,為各種規模的團隊提供全面的支持功能。將此套件與 Automapper 集成可以大大提升 C# 項目,增加數據處理和文檔處理的能力。

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

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

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >