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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AutoMapper用法一瞥

發(fā)布時間:2023/11/29 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AutoMapper用法一瞥 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前段時候做個小項目用到了autoMapper(參考了NOP里的用法),感覺還行,用起來挺方便的。首先復雜的東西我就不說了,至于詳細的教程我也就不寫了,比較園子里有很多這樣的文章,我就分享下,在項目中實際的用法。畢竟我們自己練習和項目中使用還是有些差別的。

一、創(chuàng)建AutoMapper轉(zhuǎn)換規(guī)則

首先代碼如下:

//===============================執(zhí)行AutoMapper開始====================================================var startUpTaskTypes = typeFinder.FindClassesOfType<IStartupTask>();var startUpTasks = new List<IStartupTask>();foreach (var startUpTaskType in startUpTaskTypes)startUpTasks.Add((IStartupTask)Activator.CreateInstance(startUpTaskType));//sortstartUpTasks = startUpTasks.AsQueryable().OrderBy(st => st.Order).ToList();foreach (var startUpTask in startUpTasks)startUpTask.Execute();//===============================執(zhí)行AutoMapper結束==================================================== builder.Update(container);

代碼分析如下:

?

1、在網(wǎng)站初始化的時候,加載所有web網(wǎng)站中所有程序集。

2、找到所有實現(xiàn)了IStartupTask接口的實現(xiàn)類,并創(chuàng)建

3、執(zhí)行所有IStartupTask接口的實現(xiàn)類的Execute()方法,該方法執(zhí)行并創(chuàng)建AutoMapper映射關系

?IStartupTask實現(xiàn)類也很簡單,這里我沒有用到復雜的轉(zhuǎn)換規(guī)則,如果有復雜的規(guī)則大家可以參考其他文章,代碼如下:

public class AutoMapperStartupTask:IStartupTask{public void Execute(){Mapper.CreateMap<AnnexSetting, AnnexSettingDto>();Mapper.CreateMap<AnnexSettingDto, AnnexSetting>();Mapper.CreateMap<BaseMpSet, BaseMpSetDto>();Mapper.CreateMap<BaseMpSetDto, BaseMpSet>();}}

上面我們就完成了兩個Model模型和DTO實體之間做的轉(zhuǎn)換規(guī)則,如果有其他的模型和DTO實體的轉(zhuǎn)換規(guī)則可以在這里添加。注:這些工作都是網(wǎng)站初始化的時候一次加載執(zhí)行的。

?

二、執(zhí)行AutoMapper轉(zhuǎn)換規(guī)則

首先還是看代碼:

public static class MappingExtensions{public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination){// return Mapper.DynamicMap<TSource, TDestination>(source); return Mapper.Map(source, destination);}public static TDestination MapTo<TSource, TDestination>(this TSource source){return Mapper.Map<TSource, TDestination>(source);}#region 設置/// <summary>/// 附件設置/// </summary>/// <param name="model"></param>/// <param name="destination"></param>/// <returns></returns>public static AnnexSetting ToEntity(this AnnexSettingDto model, AnnexSetting destination){return model.MapTo(destination);}public static AnnexSettingDto ToModel(this AnnexSetting entity){return entity.MapTo<AnnexSetting, AnnexSettingDto>();}#endregion}

上面的代碼其實是執(zhí)行Mapper的標準寫法,我們在使用的時候可以這樣寫:

1 public ActionResult Annex() 2 { 3 //這里其實從數(shù)據(jù)庫加載出來的模型類 4 var annexSettings = _settingService.LoadSetting<AnnexSetting>(); 5 6 //將模型類轉(zhuǎn)換為dto類 7 var model = annexSettings.ToModel(); 8 //將dto對象傳輸?shù)巾撁嫔?/span> 9 return View(model); 10 }

從上面第七行代碼看出,我們只需調(diào)用這個方法即可實現(xiàn)轉(zhuǎn)換,就這么簡單啦。。。

?

轉(zhuǎn)載于:https://www.cnblogs.com/xujie520/p/5145376.html

總結

以上是生活随笔為你收集整理的AutoMapper用法一瞥的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。