官網:http://automapper.org/ 源碼:https://github.com/AutoMapper/AutoMapper NUGET安裝: PM> Install-Package AutoMapper AutoMapper是基於對象到對象約定的映射工具,常用於(但並不僅限制於)把復 ...
源碼:https://github.com/AutoMapper/AutoMapper
NUGET安裝:
PM> Install-Package AutoMapper
AutoMapper給用戶提供了便捷的配置API,就像使用約定來完成自動映射那樣。
AutoMapper包含以下功能:
平展、投影、配置驗證、列表和數組、嵌套映射、自定義類型轉換程式、自定義值轉換程式 、自定義值格式程式 、Null值替換
AutoMapper是一款單向映射器。
這意味著它並沒有內建映射對象支持來回寫至原始源,除非用戶在更新映射對象之後明確地創建逆向反射。
這需要 通過設計完成,因為讓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就是為了應對這種情景