最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 中AutoMapper的使用方法

 更新時間:2020年12月22日 08:47:18   作者:一線碼農(nóng)  
這篇文章主要介紹了C# 中AutoMapper的使用方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

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

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

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

PM> Install-Package AutoMapper

使用 AutoMapper 創(chuàng)建映射關(guān)系

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

  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 這兩個對象之間創(chuàng)建一個 mapping 關(guān)系。

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

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

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

一個 AutoMapper 的例子

接下來可以上一些數(shù)據(jù)了,可以參考下面的代碼片段,我準備先在 source object 上賦值,然后執(zhí)行 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);

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

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

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

下面的語句可以創(chuàng)建最終的 destination object 對象。

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

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

iMapper.Map(sourceObject, destinationObject);

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

使用 AutoMapping 的 projections 功能

AutoMapper 提供了非常好的 projections 功能,projections 🐂👃的地方在于在 mapping 映射時可以無視兩者的 object 數(shù)據(jù)結(jié)構(gòu)是否一致,比如說讓 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,下面的代碼片段展示了如何去實現(xiàn)。

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
         }));

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

更多高質(zhì)量干貨:參見我的 GitHub: dotnetfly

以上就是C# 中AutoMapper的使用方法的詳細內(nèi)容,更多關(guān)于C# AutoMapper使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法

    C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法

    這篇文章主要介紹了C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法,本文總結(jié)了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三種方法,需要的朋友可以參考下
    2015-07-07
  • 詳解C#如何為某個方法設(shè)定執(zhí)行超時時間

    詳解C#如何為某個方法設(shè)定執(zhí)行超時時間

    這篇文章主要為大家詳細介紹一下C#如何為某個方法設(shè)定執(zhí)行超時時間,文中的示例代碼簡潔易懂,具有一定的借鑒價值,有需要的小伙伴可以學習一下
    2023-10-10
  • C#?手寫識別的實現(xiàn)示例

    C#?手寫識別的實現(xiàn)示例

    本文主要介紹了C#?手寫識別的實現(xiàn)示例,文章詳細介紹了如何使用C#語言調(diào)用OpenCV庫實現(xiàn)手寫識別,并通過示例程序展示了整個手寫識別過程,感興趣的可以了解一下
    2023-08-08
  • C# 合并GriewView相同列的小例子

    C# 合并GriewView相同列的小例子

    C# 合并GriewView相同列的小例子,需要的朋友可以參考一下
    2013-03-03
  • C#中Override關(guān)鍵字和New關(guān)鍵字的用法詳解

    C#中Override關(guān)鍵字和New關(guān)鍵字的用法詳解

    這篇文章主要介紹了C#中Override關(guān)鍵字和New關(guān)鍵字的用法,需要的朋友可以參考下
    2016-01-01
  • C#隊列Queue多線程用法實例

    C#隊列Queue多線程用法實例

    這篇文章主要介紹了C#隊列Queue多線程用法,實例分析了隊列的相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • C#中串口讀取問題及解決方案

    C#中串口讀取問題及解決方案

    在現(xiàn)代計算機系統(tǒng)中,串口通信仍然是許多設(shè)備和應(yīng)用程序之間進行數(shù)據(jù)交換的重要方式,無論是在工業(yè)自動化、嵌入式系統(tǒng),還是在日常的硬件調(diào)試中,串口都扮演著不可或缺的角色,本文旨在深入探討C#中串口讀取問題的常見原因,并提供一系列有效的解決方案,需要的朋友可以參考下
    2024-12-12
  • 詳解C# 中Session的用法

    詳解C# 中Session的用法

    這篇文章主要介紹了C# 中Session的用法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C#實現(xiàn)時間戳的簡單方法

    C#實現(xiàn)時間戳的簡單方法

    這篇文章主要介紹了C#實現(xiàn)時間戳的簡單方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 基于C#實現(xiàn)的仿windows左側(cè)伸縮菜單效果

    基于C#實現(xiàn)的仿windows左側(cè)伸縮菜單效果

    這篇文章主要介紹了基于C#實現(xiàn)的仿windows左側(cè)伸縮菜單效果,比較實用的功能,需要的朋友可以參考下
    2014-08-08

最新評論

庄河市| 静海县| 临汾市| 博兴县| 马龙县| 巴南区| 始兴县| 荆州市| 资阳市| 丰原市| 望谟县| 乐安县| 兰西县| 隆林| 宜章县| 桐乡市| 临沂市| 崇文区| 吉木萨尔县| 阳信县| 岫岩| 新和县| 岳阳市| 营山县| 安丘市| 万年县| 深州市| 库车县| 长武县| 沁水县| 武安市| 朔州市| 夹江县| 鄯善县| 渭南市| 克拉玛依市| 武汉市| 崇仁县| 陇南市| 皋兰县| 保山市|