AutoMapper用法一瞥
前段時候做個小項目用到了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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到自己数钱好吗
- 下一篇: WebGIS中一种根据网格索引判断点面关