1.AutoMapper簡單介紹

官網:http://automapper.org/git

源碼:https://github.com/AutoMapper/AutoMappergithub

NUGET安裝: 數組

PM> Install-Package AutoMapper

AutoMapper是基於對象到對象約定的映射工具,經常使用於(但並不只限制於)把複雜的對象模型轉爲DTO,通常用於ViewModel模式和跨 服務範疇。app

AutoMapper給用戶提供了便捷的配置API,就像使用約定來完成自動映射那樣。框架

AutoMapper包含如下功能:工具

平展、投影、配置驗證、列表和數組、嵌套映射、自定義類型轉換程序、自定義值轉換程序 、自定義值格式程序 、Null值替換spa

AutoMapper是一款單向映射器。設計

這意味着它並無內建映射對象支持來回寫至原始源,除非用戶在更新映射對象以後明確地建立逆向反射。code

這須要 經過設計完成,由於讓DTO回寫到,比方說:域模型或其餘東西,就會更改它的持久性,同時人們也認爲它是反模式的。在這種解決方案中,命令消息在雙向映射 中每每是更好的選擇。對象

然而,在某些特定環境中,有人可能會爲雙向映射辯解,好比:很是簡單的CRUD應用程序。一個支持雙向映射的框架就是Glue。

AutoMapper 解決什麼需求

話很少說,上代碼,共有兩個實體類

class People
    {
        public string Name { get; set; }
        public int Age { get; set; }
      
    }
class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

假設在項目中有此需求,將兩個類的數據進行交換,咱們一般的作法是

static void Main(string[] args)
    {
       People p = new People() { Name = "text1", Age = 12 };
       Person person = new Person();
    
       person.Name = p.Name;
       person.Age = p.Age;
​
       Console.WriteLine(person.Name);
       Console.WriteLine(person.Age);
       Console.Read();
     }

可是咱們發現,這樣費力不討好,並且咱們還發現,這兩個類裏面的屬性實際上是近似的,因此,AutoMapper就是爲了應對這種情景

相關文章
相關標籤/搜索