.NET開發中合理使用物件對映庫,簡化和提高工作效率

追逐時光者發表於2023-12-25

前言

在日常開發中,我們常常需要將一個物件對映到另一個物件,這個過程中可能需要編寫大量的重複性程式碼,如果每次都手動編寫,不僅會影響開發效率,而且當專案越來越複雜,龐大的時候還容易出現錯誤。為了解決這個問題,物件對映庫就隨之而出了,這些庫可以自動完成物件之間的對映,從而減少了開發工作量,提高了開發效率。

使用物件對映庫有哪些好處?

  • 減少開發工作量,提高開發效率。
  • 減少開發過程中的錯誤和bug。
  • 簡化程式碼結構,提高程式碼可讀性和可維護性。

AutoMapper物件對映庫介紹

AutoMapper是一個流行的.NET物件對映庫,它可以自動進行物件之間的轉換和對映,極大地簡化了開發人員在處理物件對映時的工作量。透過配置對映規則,開發人員可以快速定義物件之間的對映關係,從而避免了手動編寫大量的對映程式碼。這樣可以提高開發效率,減少出錯的可能性,並使程式碼更加可維護和易讀。

建立一個控制檯應用

本文示例是以控制檯為例子,建立一個名為AutoMapperTest的控制檯:

AutoMapper包安裝

管理NuGet程式包 搜尋:AutoMapper 安裝:

建立源物件和目標物件

接下來我們分別定義一個源物件和一個目標物件,它們擁有相同的屬性。例如,我建立一個名為PersonInfo的源物件和一個名為PersonInfoDto的目標物件:

PersonInfo的源物件

    public class PersonInfo
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
        public string Nationality { get; set; }
    }

PersonInfoDto的目標物件

    public class PersonInfoDto
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
        public string Nationality { get; set; }
    }

配置AutoMapper對映規則

我們可以定義一個MappingProfile的對映配置檔案,並在其中定義源型別和目標型別之間的對映關係。

    public class MappingProfile : Profile
    {
        public MappingProfile()
        {
            CreateMap<PersonInfo, PersonInfoDto>();
        }
    }

控制檯執行物件對映

var configuration = new MapperConfiguration(cfg => {
    cfg.AddProfile<MappingProfile>();
    //或者下面這種方式
    //cfg.CreateMap<PersonInfo, PersonInfoDto>();
});
var mapper = configuration.CreateMapper();

var personInfo = new PersonInfo
{
    FirstName = "大東",
    LastName = "陳",
    Age = 18,
    Nationality = "中國"
};
var personInfoDto = mapper.Map<PersonInfoDto>(personInfo);

專案原始碼地址

更多專案實用功能和特性歡迎前往專案開源地址檢視👀,別忘了給專案一個Star支援💖。

https://github.com/AutoMapper/AutoMapper

優秀專案和框架精選

該專案已收錄到C#/.NET/.NET Core優秀專案和框架精選中,關注優秀專案和框架精選能讓你及時瞭解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的專案和框架不被埋沒🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

DotNetGuide技術社群交流群

  • DotNetGuide技術社群是一個面向.NET開發者的開源技術社群,旨在為開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和諮詢、專案推薦、招聘資訊和解決問題的平臺。
  • 在這個社群中,開發者們可以分享自己的技術文章、專案經驗、遇到的疑難技術問題以及解決方案,並且還有機會結識志同道合的開發者。
  • 我們致力於構建一個積極向上、和諧友善的.NET技術交流平臺,為廣大.NET開發者帶來更多的價值和成長機會。

歡迎加入DotNetGuide技術社群微信交流群👪

相關文章