.NET 幫助

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

Kannaopat Udonpant
坎納帕特·烏頓潘
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();

使用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();

範例 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();

在版本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#項目,增加資料處理和文件操作功能。

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
.NET Aspire(它如何為開發者工作)
下一個 >
C# 字串分割(開發人員的運作方式)