精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

對象到對象映射-AutoMapper

開發(fā) 前端
通常,這是當一種類型看起來與另一種類型不一樣時,已經(jīng)存在轉(zhuǎn)換函數(shù),并且您希望從“松散”類型變?yōu)楦鼜姷念愋停缱址脑搭愋偷絀nt32的目標類型。

[[382776]]

本文轉(zhuǎn)載自微信公眾號「UP技術控」,作者conan5566 。轉(zhuǎn)載本文請聯(lián)系UP技術控公眾號。  

 概述

AutoMapper 是一個對象-對象映射器,可以將一個對象映射到另一個對象。

用來解決一個看似復雜的問題,這種類型的代碼編寫起來相當枯燥乏味,

官網(wǎng)地址:

http://automapper.org/

官方文檔:

https://docs.automapper.org/en/latest/

入門

AutoMapper支持使用靜態(tài)服務位置構造“自定義值解析器”,“自定義類型轉(zhuǎn)換器”和“值轉(zhuǎn)換器”的功能:

  1. var configuration = new MapperConfiguration(cfg => 
  2.     cfg.ConstructServicesUsing(ObjectFactory.GetInstance); 
  3.  
  4.     cfg.CreateMap<Source, Destination>(); 
  5. }); 

或動態(tài)服務位置,用于基于實例的容器(包括子容器/嵌套容器):

  1. var mapper = new Mapper(configuration, childContainer.GetInstance); 
  2.  
  3. var dest = mapper.Map<Source, Destination>(new Source { Value = 15 }); 

您可以使用配置文件定義配置。然后,通過在啟動時調(diào)用IServiceCollection擴展方法AddAutoMapper,使AutoMapper知道這些概要文件在哪些程序集中定義:

  1. services.AddAutoMapper(profileAssembly1, profileAssembly2 /*, ...*/); 

或標記類型:

  1. services.AddAutoMapper(typeof(ProfileTypeFromAssembly1), typeof(ProfileTypeFromAssembly2) /*, ...*/); 

現(xiàn)在,您可以在運行時將AutoMapper注入服務/控制器中:

  1. public class EmployeesController { 
  2.   private readonly IMapper _mapper; 
  3.  
  4.   public EmployeesController(IMapper mapper) => _mapper = mapper; 
  5.  
  6.   // use _mapper.Map or _mapper.ProjectTo 

當然還有很多可擴展性,比如:

定制類型轉(zhuǎn)換器

有時,您需要完全控制從一種類型到另一種類型的轉(zhuǎn)換。通常,這是當一種類型看起來與另一種類型不一樣時,已經(jīng)存在轉(zhuǎn)換函數(shù),并且您希望從“松散”類型變?yōu)楦鼜姷念愋?,例如字符串的源類型到Int32的目標類型。

例如,假設我們的源類型為:

  1. public class Source 
  2.   public string Value1 { get; set; } 
  3.   public string Value2 { get; set; } 
  4.   public string Value3 { get; set; } 

但您想將其映射到:

  1. public class Destination 
  2.   public int Value1 { get; set; } 
  3.   public DateTime Value2 { get; set; } 
  4.   public Type Value3 { get; set; } 

如果我們嘗試按原樣映射這兩種類型,則AutoMapper會拋出異常(在映射時和配置檢查時),因為AutoMapper不知道從字符串到int,DateTime或Type的任何映射。要為這些類型創(chuàng)建映射,我們必須提供一個自定義類型轉(zhuǎn)換器,并且我們可以通過三種方式:

  1. void ConvertUsing(Func<TSource, TDestination> mappingFunction); 
  2. void ConvertUsing(ITypeConverter<TSource, TDestination> converter); 
  3. void ConvertUsing<TTypeConverter>() where TTypeConverter : ITypeConverter<TSource, TDestination>; 

第一個選項就是任何帶有源并返回目的地的函數(shù)(也有多個重載)。這適用于簡單的情況,但對于較大的情況則顯得笨拙。在更困難的情況下,我們可以創(chuàng)建一個自定義的ITypeConverter

  1. public interface ITypeConverter<in TSource, TDestination> 
  2.   TDestination Convert(TSource source, TDestination destination, ResolutionContext context); 

并向AutoMapper提供一個自定義類型轉(zhuǎn)換器的實例,或者為類型提供AutoMapper將在運行時實例化的類型。我們上面的源/目標類型的映射配置將變?yōu)椋?/p>

  1. public void Example() 
  2.     var configuration = new MapperConfiguration(cfg => { 
  3.       cfg.CreateMap<string, int>().ConvertUsing(s => Convert.ToInt32(s)); 
  4.       cfg.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter()); 
  5.       cfg.CreateMap<string, Type>().ConvertUsing<TypeTypeConverter>(); 
  6.       cfg.CreateMap<Source, Destination>(); 
  7.     }); 
  8.     configuration.AssertConfigurationIsValid(); 
  9.  
  10.     var source = new Source 
  11.     { 
  12.         Value1 = "5"
  13.         Value2 = "01/01/2000"
  14.         Value3 = "AutoMapperSamples.GlobalTypeConverters.GlobalTypeConverters+Destination" 
  15.     }; 
  16.  
  17.     Destination result = mapper.Map<Source, Destination>(source); 
  18.     result.Value3.ShouldEqual(typeof(Destination)); 
  19.  
  20. public class DateTimeTypeConverter : ITypeConverter<string, DateTime> 
  21.     public DateTime Convert(string source, DateTime destination, ResolutionContext context) 
  22.     { 
  23.         return System.Convert.ToDateTime(source); 
  24.     } 
  25.  
  26. public class TypeTypeConverter : ITypeConverter<string, Type> 
  27.     public Type Convert(string source, Type destination, ResolutionContext context) 
  28.     { 
  29.           return Assembly.GetExecutingAssembly().GetType(source); 
  30.     } 

在第一個映射中,從字符串到Int32,我們僅使用內(nèi)置的Convert.ToInt32函數(shù)(作為方法組提供)。接下來的兩個使用自定義ITypeConverter實現(xiàn)。

自定義類型轉(zhuǎn)換器的真正強大之處在于,只要AutoMapper在任何映射類型上找到源/目標對,它們就可以使用。我們可以構建一組自定義類型轉(zhuǎn)換器,并在其上使用其他映射配置,而無需任何其他配置。在上面的示例中,我們不必再次指定string / int轉(zhuǎn)換。由于必須在類型成員級別配置自定義值解析器,因此自定義類型轉(zhuǎn)換器的作用域是全局的。

當然還有很多功能需要去實際項目中實現(xiàn)。

 

責任編輯:武曉燕 來源: UP技術控
相關推薦

2021-05-31 06:28:35

AutoMapper對象映射器

2023-12-15 15:03:54

.NETAutoMapper對象映射工具

2024-05-17 08:59:02

.NET對象映射庫

2023-07-07 07:43:37

AutoMapper映射庫

2009-09-23 13:26:10

Hibernate對象

2012-02-08 12:17:38

HibernateJava

2012-05-10 09:44:39

MongoDBJava

2012-02-08 14:01:18

HibernateJava

2021-01-12 07:34:13

NetCore 映射器對象

2024-02-26 08:15:00

數(shù)據(jù)映代碼開發(fā)

2020-07-09 07:43:13

JavaScript數(shù)據(jù)結構技術

2012-05-30 15:03:43

ibmdw

2009-07-20 13:47:08

iBATIS.NET字

2020-07-28 08:00:03

存儲數(shù)據(jù)技術

2024-04-24 08:32:55

.NET對象映射

2021-11-29 09:48:35

Redis 對象映射

2021-11-11 17:36:07

鴻蒙HarmonyOS應用

2023-01-10 09:38:09

面向對象系統(tǒng)

2025-06-09 02:14:00

2021-09-03 15:41:00

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

激情丁香综合五月| 97一区二区国产好的精华液| 久久久精品国产免大香伊| 国产成人黄色av| 亚洲一级片在线播放| 免费成人黄色网| 日韩毛片一二三区| 国产一区二区精品免费| 国产第一页在线观看| 亚洲91中文字幕无线码三区| 精品久久久久99| caoporn超碰97| 日本三级在线播放完整版| 国产传媒日韩欧美成人| 欧美最猛性xxxxx(亚洲精品)| 国产一区二区三区视频播放| 果冻天美麻豆一区二区国产| 欧美亚洲一区二区在线| 日韩在线视频在线| 岛国大片在线观看| fc2成人免费人成在线观看播放 | 韩漫成人漫画| 亚洲视频一区二区免费在线观看| 久久久水蜜桃| 99久久精品无免国产免费| 亚洲欧美日韩在线观看a三区| 日韩中文字幕不卡视频| bl动漫在线观看| 亚洲视频自拍| 色婷婷狠狠综合| 黄色三级中文字幕| 欧美人xxx| 久久美女艺术照精彩视频福利播放| 91九色视频在线| 三级网站在线播放 | 亚洲熟妇无码一区二区三区导航| av中文天堂在线| 久久综合一区二区| 国产精品免费一区二区三区四区 | 手机成人在线| 偷拍自拍在线| 成人看片黄a免费看在线| 成人免费自拍视频| 中文永久免费观看| 爽爽淫人综合网网站| 午夜精品一区二区三区视频免费看| 精品久久久中文| 制服诱惑一区| 日日夜夜精品一区| 国产农村妇女精品| 日本一区高清不卡| 可以在线观看的av| 久久日一线二线三线suv| 好吊色欧美一区二区三区视频| 国产99对白在线播放| 麻豆精品视频在线| 国产精品日韩欧美大师| 日本精品入口免费视频| 巨乳诱惑日韩免费av| 91国产美女在线观看| 久久久精品91| 亚洲视频免费| 欧美精品九九久久| 国产一二三四在线| 在线播放不卡| 97在线观看视频| 欧美精品二区三区| 久久国产精品99国产| 97久久精品视频| 国产手机在线视频| 亚洲一区中文| 日韩免费黄色av| 黄色av一区二区| 日韩 欧美一区二区三区| 国产精品福利久久久| 中文字幕无线码一区| 精品一区二区影视| 动漫3d精品一区二区三区| 黑人操亚洲女人| 91蜜桃视频在线| 五月婷婷综合色| 日本黄色片在线观看| 一区二区在线观看视频在线观看| 欧美图片激情小说| 美女18一级毛片一品久道久久综合| 日本道色综合久久| 午夜xxxxx| 人人精品亚洲| 中文字幕亚洲专区| 免费在线一区二区三区| 免费一区视频| 成人a在线观看| 日韩有码第一页| 国产清纯在线一区二区www| 中文字幕欧美人与畜| 国产第一页在线视频| 色就色 综合激情| 搡的我好爽在线观看免费视频| 国产极品模特精品一二| 一本大道亚洲视频| 国产亚洲精品久久777777| 日韩精品欧美精品| 成人黄色在线免费观看| 国产午夜精品一区理论片| 樱花草国产18久久久久| 国产v亚洲v天堂无码久久久| 欧美视频精品全部免费观看| 亚洲精品视频免费| 成年人午夜剧场| 久久婷婷激情| 国产精品久久波多野结衣| 肉丝一区二区| 亚洲一区二区三区国产| 欧美成人黄色网址| 欧美爱爱网站| 欧美疯狂xxxx大交乱88av| 欧美一级做a爰片免费视频| 国产伦精品一区二区三区视频 | 精品久久人人做人人爽| 69xxx免费| 欧美日本不卡高清| 国产欧美精品在线| 男人av在线| 一区二区三区日本| 亚洲男人天堂av在线| 蜜桃一区二区三区| 国自在线精品视频| 精品国产亚洲一区二区麻豆| 日本一区二区三区四区| 欧美三级一级片| 亚洲2区在线| 久久精品精品电影网| 无码一区二区三区| 91老师片黄在线观看| 成人国产在线看| 成人在线精品| 亚洲爱爱爱爱爱| 69av.com| 国产一区二区免费在线| 亚洲精品久久久久久一区二区| 亚洲v.com| 精品免费日韩av| 国产精品久久久久久久精| 乱一区二区av| 日韩影视精品| 午夜av成人| 伊人久久精品视频| 在线免费一区二区| 国产视频911| 成人性做爰aaa片免费看不忠| 乱亲女h秽乱长久久久| 久久久影视精品| 亚洲黄色片视频| 一区二区三区四区蜜桃| 韩国三级丰满少妇高潮| 综合天堂久久久久久久| 成人淫片在线看| 欧洲美女少妇精品| 7777精品伊人久久久大香线蕉最新版| 欧美88888| 精品午夜久久福利影院| 精品少妇人妻av一区二区| 成人永久在线| 久久久久久高潮国产精品视| 农村少妇久久久久久久| 午夜久久久影院| 日韩乱码人妻无码中文字幕久久| 久久激情一区| 天天好比中文综合网| 亚洲福利影视| 欧美日韩xxxxx| 中文字幕第50页| 亚洲一区美女| 久久精品日产第一区二区三区| 国产免费一区视频观看免费| 97精品国产91久久久久久| 国产69精品久久久久9999| 亚洲欧美国产高清va在线播| 亚洲精选中文字幕| 国产1区2区3区中文字幕| 国产一区二区三区四区在线| 亚洲精品四区| 日本一区二区三区四区高清视频| 99re久久| 欧美日韩第一视频| 毛片免费在线播放| 7777精品伊人久久久大香线蕉| 欧美日韩激情在线观看| a美女胸又www黄视频久久| 国产自偷自偷免费一区| 91精品国产91久久久久久密臀| 国产精品国产三级国产专区53| 色偷偷色偷偷色偷偷在线视频| 亚洲天堂男人天堂| 99久久精品国产一区二区成人| 亚洲sss视频在线视频| 成人激情五月天| 懂色av中文字幕一区二区三区| 欧美成人xxxxx| 国产高清一区| 久久精品日韩精品| 色成人综合网| 热99精品只有里视频精品| 欧美jizz18性欧美| 日韩精品在线视频观看| 91久久久久久久久久久久| 精品久久久久久中文字幕| 国产亚洲精品久久久久久豆腐| 成人av电影在线观看| 亚欧美在线观看| 亚洲一区中文| 欧美黄网在线观看| 日韩av久操| 久久久久久九九九九| 亚洲精品a区| 国产免费一区二区三区在线能观看| 白浆在线视频| 蜜臀久久99精品久久久无需会员 | 日韩国产精品久久久久久亚洲| 少妇一晚三次一区二区三区| 久久视频精品| 欧美在线3区| 欧美日韩夜夜| 91久久大香伊蕉在人线| 变态调教一区二区三区| 亚洲精品福利免费在线观看| 国产熟女精品视频| 色狠狠综合天天综合综合| 欧美成人精品欧美一级乱黄| 亚洲日本在线天堂| 极品蜜桃臀肥臀-x88av| 成人午夜免费视频| 中文字幕资源在线观看| 免费永久网站黄欧美| av日韩在线看| 欧美一区精品| 宅男av一区二区三区| 亚洲三级网页| 久久精品二区| 高清一区二区三区| 3d动漫啪啪精品一区二区免费 | 日本黄大片一区二区三区| 亚洲一区日韩| 日韩a∨精品日韩在线观看| 欧美电影一区| 日本一区视频在线观看免费| 国产suv精品一区| 成人精品水蜜桃| 久久夜色精品国产噜噜av小说| 成人国产精品色哟哟| 中文字幕在线2019| 影音先锋国产精品| 中文字幕av导航| 久久国产亚洲精品| 日本一区二区三区视频在线观看| 精品少妇3p| 国内国产精品久久| 成人在线观看毛片| 久久精品国产99久久| 欧美精品成人一区二区在线观看 | 亚洲黄色录像| 精品乱码一区二区三区| 米奇精品关键词| 国产精品sss| 91精品国产自产在线丝袜啪| 91视频88av| 成人黄色av网址| 国产欧美日韩综合一区在线观看| 综合视频一区| 精品无码久久久久国产| 天天躁日日躁狠狠躁欧美| 精品视频免费观看| 欧美一区二区三区红桃小说| 精品国产乱码久久久久久郑州公司| 99re8这里有精品热视频免费| av资源站久久亚洲| 亚洲欧美日本伦理| 欧美一区二区视频17c| av一区二区在线观看| 婷婷视频在线播放| 欧美片第1页综合| 国产高清www| 国产毛片一区| 一区二区三区韩国| 国产一区二区导航在线播放| 超碰人人cao| 成人福利视频在线| 亚洲国产天堂av| 国产精品超碰97尤物18| 黄色在线观看免费| 亚洲第一成人在线| 三级网站在线播放| 欧美一区二区三区婷婷月色| 久久久久久久久久成人| 欧美一区二区三区性视频| 欧美一区,二区| 亚洲视频自拍偷拍| 中文字幕中文字幕在线中高清免费版| 欧美黑人极品猛少妇色xxxxx| h片在线观看视频免费| 国产成人一区二区在线| 欧美大片91| 国产在线一区二区三区欧美| 欧美极品在线观看| 亚洲欧洲日本国产| 极品av少妇一区二区| 国产a级片免费观看| 激情综合网av| 日本xxxxxxxxx18| 一区二区三区国产豹纹内裤在线 | 日本在线丨区| 爱福利视频一区| a一区二区三区| 成人午夜高潮视频| 欧美高清视频看片在线观看| 一区二区三区四区免费视频| 亚洲精品美女| 一女二男3p波多野结衣| 91污在线观看| 色欲人妻综合网| 色婷婷av一区二区三区软件| 亚洲毛片在线播放| 日韩在线观看免费全集电视剧网站 | 精品视频免费在线| 天天射,天天干| 欧美大胆在线视频| 电影一区电影二区| 久久亚洲综合网| 激情视频一区| 天天色天天综合网| 国产欧美精品一区aⅴ影院| 日韩人妻无码一区二区三区99| 欧美日本在线视频| 免费在线视频你懂得| 777777777亚洲妇女| 日韩一级淫片| 精品久久免费观看| 紧缚捆绑精品一区二区| jizz中文字幕| 亚洲小说欧美激情另类| 精品人妻伦一二三区久久| 中文字幕亚洲综合久久筱田步美| 久热在线观看视频| 黑人中文字幕一区二区三区| 伊人久久大香线| 色诱视频在线观看| 久久久久久久久久久电影| 亚洲 欧美 视频| 欧美一区二区三区在线观看视频| 老司机福利在线视频| 国产日韩精品综合网站| 日韩欧美伦理| 在线观看av网页| 日本一区免费视频| 最近中文字幕免费在线观看| 亚洲女人初尝黑人巨大| 欧美另类老肥妇| 欧美激情导航| 久久久久一区| 成人黄色免费网址| 欧美日韩在线播放三区| 大地资源中文在线观看免费版 | 欧美男人天堂| 精品欧美国产| 亚洲毛片在线| a级在线免费观看| 在线免费观看成人短视频| 最新97超碰在线| 成人女保姆的销魂服务| 艳女tv在线观看国产一区| 亚洲美女精品视频| 亚洲国产成人av| 天天色综合av| 国产精品美乳在线观看| 成人羞羞视频播放网站| 欧美国产日韩在线播放| 国产女人18毛片水真多成人如厕 | 欧美午夜影院一区| 成人日批视频| 国产精品一区二| 视频一区在线视频| 日本污视频网站| 欧美精品18+| 18aaaa精品欧美大片h| 久久精精品视频| 亚洲激情在线| 欧美成人另类视频| 日韩精品专区在线| 欧美舌奴丨vk视频| 亚洲一区免费看| 高清shemale亚洲人妖| 日韩不卡高清视频| 久久久91精品| 任你躁在线精品免费| 粉嫩虎白女毛片人体| 亚洲男同性视频| 欧美日韩激情视频一区二区三区| 国产精品色视频| 国产精品videosex极品| 中文字幕国产专区|