在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
Automapper 是一個多功能且強大的 C# 庫,旨在促進物件到物件的映射,使在複雜物件模型之間轉移數據變得更簡單且更易於維護。 在本文中,我們將探討 Automapper 如何有效地映射屬性、展平複雜的物件模型,並處理各種類型的物件,如用戶領域對象和資料傳輸對象。
Automapper in C# 是一個對象對象的映射工具,可以簡化不同對象類型之間的數據轉換和傳輸。這在涉及數據實體及其轉換為數據傳輸對象(DTOs)的情境中特別有用。
簡化代碼: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()
Automapper 的功能遠超簡單的屬性對屬性映射。 它可以熟练处理更复杂的情境。
Automapper 的一個優勢是其可以將複雜的物件模型扁平化。 此功能在處理嵌套物件時特別有用,可將這些嵌套屬性映射到平坦的目標類結構。
Automapper 能夠熟練地在各種物件類型之間進行映射,包括使用者領域物件、DTOs,甚至是視圖模型,為不同的資料傳輸需求提供多功能的解決方案。
為了更好地了解Automapper的實用性,讓我們來探索一些實際的例子。
考慮一個情境,我們需要將使用者實體的屬性映射到使用者 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()
在較複雜的情況下,我們將具有巢狀使用者詳細資訊的訂單物件對應到簡化的訂單 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()
在9.0版本中,AutoMapper已從靜態API(Mapper.Initialize
)過渡到基於實例的API。 此變更增強了靈活性,更適合現代應用程式,特別是那些使用相依注入的應用程式。 如果您使用的是9.0以下版本,則靜態API方法適用。 然而,對於較新版本,建議採用上述示例中的基於實例的 API。
Iron Software Suite for .NET 是一個強大的套件,包含一系列的程式庫,每個程式庫都有其特定的用途。 涵蓋功能包括創建、閱讀和編輯 PDF,將 HTML 轉換為 PDF,以及將圖像處理成多種語言的文本。 此套件滿足各種開發需求,使其成為任何 C# 項目的多功能補充。
IronPDF for PDF Management:此元件允許開發人員創建、讀取、編輯和簽署 PDF。 它還提供將 HTML 轉換為 PDF 的功能,這項功能在從基於網路的數據生成報告或文件時特別有用。
IronXL Excel 文件處理:IronXL 無需使用 Office Interop 就能輕鬆處理 Excel 文件,簡化數據操作和分析任務。
IronOCR for Text Extraction:它能夠從影像中擷取文字,支援多達127種語言,對於國際專案來說非常多元化。
IronBarcode for QR and Barcode Support:一個允許讀取和編寫QR碼和條碼的程式庫,增強庫存管理、追蹤及其他相關任務的能力。
雖然Automapper
在C#中擅長在不同對象模型之間映射屬性,Iron Software's Libraries則通過提供處理各種數據格式和類型的工具來擴展功能。例如,在使用Automapper將一個用戶領域對象轉換為DTO後,可以使用IronPDF生成PDF格式的綜合報告。 同樣地,使用Automapper提取或轉換的數據可進一步使用IronXL進行Excel文件操作來處理或分析。
Automapper 是 C# 開發人員的重要工具,可以簡化物件之間的映射任務。 其在映射屬性、處理複雜對象模型,以及提供可自定義的映射配置方面的強大功能,使其成為高效軟體開發的必備工具。 了解物件模型的複雜性以及如何配置Automapper以符合特定需求,這對於在任何專案中最大化其潛力至關重要。
Iron Software 的Iron Suite提供多種授權選項,包括Iron Software 的免費試用,以滿足不同項目的需求。 其授權分為 Lite、Plus 和 Professional,滿足不同團隊規模的需求,並提供全面的支持功能。 將此套件與Automapper整合可以大大提升C#項目,增加資料處理和文件操作功能。