日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 中AutoMapper的使用方法

發布時間:2024/1/1 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 中AutoMapper的使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

譯文鏈接: https://www.infoworld.com/art…

AutoMapper 是一個非常流行的 object-to-object 映射庫,它的目的就是幫助你實現不同類型對象之間的映射,舉一個例子,在 DDD 開發模式中,你可能需要實現將 DTO object 映射為 Model object,在過去,你需要人肉的將這兩個類型下的屬性字段進行一一映射,現在 AutoMapper 就可以幫你節省 這種冗余的模板式代碼 匹配所耗費的時間。

開始玩 AutoMapper 之前,你需要在 Visual Studio 中創建一個 Project 并且安裝 AutoMapper,你可以從 NuGet 上下載,也可以在 NuGet Package Manager Console 控制臺輸入如下命令:

PM> Install-Package AutoMapper

使用 AutoMapper 創建映射關系
像 AutoMapper 這樣的 object-to-object 映射工具,它必須能夠做到將一種輸入類型轉換成另一個輸出類型,是不是很拗口,可以先考慮下面的兩個類。

public class AuthorModel {public int Id{get; set;}public string FirstName{get;set;}public string LastName{get; set;}public string Address{get; set;} }public class AuthorDTO {public int Id{get; set;}public string FirstName{get; set;}public string LastName{get; set;}public string Address{get; set;} }

接下來,下面的代碼段將會告知你如何使用 AutoMapper 在 AuthorModel 和 AuthorDTO 這兩個對象之間創建一個 mapping 關系。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorModel, AuthorDTO>();});

最終的 mapping 轉換,你還需要增加幾句下面的代碼,實現兩個類型之間的轉換。

IMapper iMapper = config.CreateMapper(); var source = new AuthorModel(); var destination = iMapper.Map<AuthorModel, AuthorDTO>(source);

一個 AutoMapper 的例子
接下來可以上一些數據了,可以參考下面的代碼片段,我準備先在 source object 上賦值,然后執行 AutoMapper 中的 Map 方法之后,在 destination object 上原樣顯示出來。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorModel, AuthorDTO>();}); IMapper iMapper = config.CreateMapper(); var source = new AuthorModel(); source.Id = 1; source.FirstName = "Joydip"; source.LastName = "Kanjilal"; source.Address = "India"; var destination = iMapper.Map<AuthorModel, AuthorDTO>(source); Console.WriteLine("Author Name: "+ destination.FirstName + " " + destination.LastName);

當你執行完這段代碼之后,destination object 上的 Author Name 將會輸出到控制臺上,目標對象上的 FirstName 和 LastName 和 source object 上的這兩個屬性值保持一致,說明 automapper 已經幫你成功映射。

值得注意的是,AutoMapper 不僅僅可以 mapping 一個類,還可以 mapping 多個類,默認情況下,AutoMapper會按照默認約定匹配,也就是被mapping的對象之間具有相同的屬性名稱才能被成功映射,但現實情況下,很多被映射的屬性名稱是不相同的,這個時候就需要人工介入指定 mapping 關系讓 AutoMapper 按照你設定的執行,假定你需要實現 Contact 到 ContactDetails 之間的映射,下面的例子展示了如何去實現這種關系。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorModel, AuthorDTO>().ForMember(destination => destination.ContactDetails,opts => opts.MapFrom(source => source.Contact));});

下面的語句可以創建最終的 destination object 對象。

var destination = iMapper.Map<AuthorModel, AuthorDTO>(source);

有時候你已經生成了 destination object,在這基礎上你還想二次映射,這時可以使用下面替代語句。

iMapper.Map(sourceObject, destinationObject);

本質上來說,上面的這段代碼常用于匹配兩個已存在的 object。

使用 AutoMapping 的 projections 功能
AutoMapper 提供了非常好的 projections 功能,projections 🐂👃的地方在于在 mapping 映射時可以無視兩者的 object 數據結構是否一致,比如說讓 source 的多個屬性 映射到 destination 的一個屬性上,而上面我們一直討論的都是一對一的 object mapping。

接下來我們一起學習下 projection,舉個例子,考慮如下類。

譯文鏈接: https://www.infoworld.com/art…

AutoMapper 是一個非常流行的 object-to-object 映射庫,它的目的就是幫助你實現不同類型對象之間的映射,舉一個例子,在 DDD 開發模式中,你可能需要實現將 DTO object 映射為 Model object,在過去,你需要人肉的將這兩個類型下的屬性字段進行一一映射,現在 AutoMapper 就可以幫你節省 這種冗余的模板式代碼 匹配所耗費的時間。

開始玩 AutoMapper 之前,你需要在 Visual Studio 中創建一個 Project 并且安裝 AutoMapper,你可以從 NuGet 上下載,也可以在 NuGet Package Manager Console 控制臺輸入如下命令:

PM> Install-Package AutoMapper

使用 AutoMapper 創建映射關系
像 AutoMapper 這樣的 object-to-object 映射工具,它必須能夠做到將一種輸入類型轉換成另一個輸出類型,是不是很拗口,可以先考慮下面的兩個類。

public class AuthorModel {public int Id{get; set;}public string FirstName{get;set;}public string LastName{get; set;}public string Address{get; set;} }public class AuthorDTO {public int Id{get; set;}public string FirstName{get; set;}public string LastName{get; set;}public string Address{get; set;} }

接下來,下面的代碼段將會告知你如何使用 AutoMapper 在 AuthorModel 和 AuthorDTO 這兩個對象之間創建一個 mapping 關系。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorModel, AuthorDTO>();});

最終的 mapping 轉換,你還需要增加幾句下面的代碼,實現兩個類型之間的轉換。

IMapper iMapper = config.CreateMapper(); var source = new AuthorModel(); var destination = iMapper.Map<AuthorModel, AuthorDTO>(source);

一個 AutoMapper 的例子
接下來可以上一些數據了,可以參考下面的代碼片段,我準備先在 source object 上賦值,然后執行 AutoMapper 中的 Map 方法之后,在 destination object 上原樣顯示出來。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorModel, AuthorDTO>();}); IMapper iMapper = config.CreateMapper(); var source = new AuthorModel(); source.Id = 1; source.FirstName = "Joydip"; source.LastName = "Kanjilal"; source.Address = "India"; var destination = iMapper.Map<AuthorModel, AuthorDTO>(source); Console.WriteLine("Author Name: "+ destination.FirstName + " " + destination.LastName);

當你執行完這段代碼之后,destination object 上的 Author Name 將會輸出到控制臺上,目標對象上的 FirstName 和 LastName 和 source object 上的這兩個屬性值保持一致,說明 automapper 已經幫你成功映射。

值得注意的是,AutoMapper 不僅僅可以 mapping 一個類,還可以 mapping 多個類,默認情況下,AutoMapper會按照默認約定匹配,也就是被mapping的對象之間具有相同的屬性名稱才能被成功映射,但現實情況下,很多被映射的屬性名稱是不相同的,這個時候就需要人工介入指定 mapping 關系讓 AutoMapper 按照你設定的執行,假定你需要實現 Contact 到 ContactDetails 之間的映射,下面的例子展示了如何去實現這種關系。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorModel, AuthorDTO>().ForMember(destination => destination.ContactDetails,opts => opts.MapFrom(source => source.Contact));});

下面的語句可以創建最終的 destination object 對象。

1
var destination = iMapper.Map<AuthorModel, AuthorDTO>(source);
有時候你已經生成了 destination object,在這基礎上你還想二次映射,這時可以使用下面替代語句。

iMapper.Map(sourceObject, destinationObject);

本質上來說,上面的這段代碼常用于匹配兩個已存在的 object。

使用 AutoMapping 的 projections 功能
AutoMapper 提供了非常好的 projections 功能,projections 🐂👃的地方在于在 mapping 映射時可以無視兩者的 object 數據結構是否一致,比如說讓 source 的多個屬性 映射到 destination 的一個屬性上,而上面我們一直討論的都是一對一的 object mapping。

接下來我們一起學習下 projection,舉個例子,考慮如下類。

public class Address {public string City { get; set; }public string State { get; set; }public string Country { get; set; } }

接下來在 AuthorModel 類中新增一個 Address 屬性用來存儲 Author 的地址信息,修改后的 AuthorModel 類如下:

public class AuthorModel {public int Id{get; set;}public string FirstName{get;set;}public string LastName{get; set;}public Address Address{get; set;} }

然后再更新一下 AuthorDTO 類

public class AuthorDTO {public int Id{get; set;}public string FirstName{get; set;}public string LastName{get; set;}public string City { get; set; }public string State { get; set; }public string Country { get; set; } }

接下來我們需要將 AuthorDTO 映射到 AuthorModel,下面的代c#教程碼片段展示了如何去實現。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorDTO, AuthorModel>().ForMember(destination => destination.Address,map => map.MapFrom(source => new Address{City = source .City,State = source .State,Country = source.Country}));

我會在后續的文章中繼續討論 AutoMapper 更多的高級特性,現在,你可以通過這個鏈接: http://automapper.org/ 去學習更多的 AutoMapper 知識。

更多高質量干貨:參見我的 GitHub: dotnetfly

以上就是C# 中AutoMapper的使用方法的詳細內容
public class Address
{
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
接下來在 AuthorModel 類中新增一個 Address 屬性用來存儲 Author 的地址信息,修改后的 AuthorModel 類如下:

public class AuthorModel {public int Id{get; set;}public string FirstName{get;set;}public string LastName{get; set;}public Address Address{get; set;} }

然后再更新一下 AuthorDTO 類

public class AuthorDTO {public int Id{get; set;}public string FirstName{get; set;}public string LastName{get; set;}public string City { get; set; }public string State { get; set; }public string Country { get; set; } }

接下來我們需要將 AuthorDTO 映射到 AuthorModel,下面的代碼片段展示了如何去實現。

var config = new MapperConfiguration(cfg => {cfg.CreateMap<AuthorDTO, AuthorModel>().ForMember(destination => destination.Address,map => map.MapFrom(source => new Address{City = source .City,State = source .State,Country = source.Country}));

我會在后續的文章中繼續討論 AutoMapper 更多的高級特性,現在,你可以通過這個鏈接: http://automapper.org/ 去學習更多的 AutoMapper 知識。

更多高質量干貨:參見我的 GitHub: dotnetfly

以上就是C# 中AutoMapper的使用方法的詳細內容

總結

以上是生活随笔為你收集整理的C# 中AutoMapper的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。