亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

AutoMapper(七)

2019-11-14 13:48:28
字體:
來源:轉載
供稿:網友

返回總目錄


Null值替換

如果源類型的成員鏈上的屬性值為Null,Null值替換允許提供一個可替換的值。下面有兩個類Person和PersonInfo類,都有一個屬性Title(頭銜),從Person映射到PersonInfo,如果Person的屬性沒有賦值,那么PersonInfo的對應屬性值就用“屌絲”來替換。

namespace SeventhAutoMapper{    class Person    {        public string Title { get; set; }     }    class PersonInfo    {        public string Title { get; set; }    }    class PRogram    {        static void Main(string[] args)        {            //映射            Mapper.CreateMap<Person, PersonInfo>()                .ForMember(dest => dest.Title, opt => opt.NullSubstitute("屌絲"));//源屬性如果為null,置為“屌絲”            //執行映射            var personInfo = Mapper.Map<PersonInfo>(new Person());//源屬性未賦值,故為null          var personInfo2 = Mapper.Map<PersonInfo>(new Person(){Title = "高富帥"});//源屬性有值            //輸出結果            Console.WriteLine("personInfo.Title=" + personInfo.Title);          Console.WriteLine("personInfo2.Title=" + personInfo2.Title);          Console.Read();        }    }}

測試結果如下:

image

開放泛型

AutoMapper支持開放泛型映射。下面創建兩個泛型類:

class Soure<T>{    public T Value { get; set; }}class Destination<T>{    public T Value { get; set; }}

我們不需要創建封閉的泛型類型(也就是不將具體的類型寫死在尖括號內),AutoMapper在運行時會將開放泛型的任何配置應用到關閉的映射上去。

//創建開放泛型的映射Mapper.CreateMap(typeof(Source<>),typeof(Destination<>));var src1 = new Source<int> {Value = 22};var dest1= Mapper.Map<Destination<int>>(src1);Console.WriteLine(dest1.Value);var src2  = new Source<string> {Value = "Hello,AutoMapper!"};var dest2 = Mapper.Map<Destination<string>>(src2);Console.WriteLine(dest2.Value);//......依次類推Console.Read();

測試結果如下:

image

因為C#只允許關閉的泛型形參,所以必須使用不帶泛型參數的CreateMap方法來創建自己的開放泛型參數映射,同時可以使用所有可以利用的映射配置。AutoMapper在配置驗證期間會跳過開放泛型類型映射。

也可以創建一個開放泛型轉換器:

Mapper.CreateMap(typeof(Source<>), typeof(Destination<>)).ConvertUsing(typeof(Converter<>));

投影

通過扁平化對象模型,將一個源類型轉換成一個目標類型。不需要額外的配置,AutoMapper只要求一個扁平的目標類型能匹配源類型的命名結構。當把一個源值投影到一個不精準匹配源結構的目標值時,必須指明成員映射定義。

舉個栗子,我們想把一個源結構CalendarEvent轉成一個在Web頁面上方便用戶輸入的目標結構CalendarEventForm:

public class CalendarEvent{    public DateTime Date { get; set; }    public string Title { get; set; }}public class CalendarEventForm{    public DateTime EventDate { get; set; }    public int EventHour { get; set; }    public int EventMinute { get; set; }    public string Title { get; set; }}

由于目標屬性不是很匹配源屬性(CalendarEvent.Date需要成為CalendarEventForm.EventDate),我們需要在類型映射配置中指明成員的映射規則:

var calender = new CalendarEvent(){    Date = DateTime.Now,    Title = "歷史性時刻"};//創建映射Mapper.CreateMap<CalendarEvent, CalendarEventForm>()    .ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.Date.Date))    .ForMember(dest => dest.EventHour, opt => opt.MapFrom(src => src.Date.Hour))    .ForMember(dest => dest.EventMinute, opt => opt.MapFrom(src => src.Date.Minute));//執行映射var calenderForm = Mapper.Map<CalendarEventForm>(calender);//輸出映射前的對象Console.WriteLine("calender.Date={0},Title={1}",calender.Date,calender.Title);//輸出映射后的對象foreach (PropertyInfo info in calenderForm.GetType().GetProperties()){    Console.WriteLine(info.Name+"="+info.GetValue(calenderForm));}

測試結果如下:

image

 

好的,關于AutoMapper的系列教程就先告一段落了,當時開這系列教程的初衷是為了順利地進行項目地開發,現在會用了,關于AutoMapper的話題就暫時先放放,不過以后肯定還會有關于AutoMapper的博客的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄色成人av网| 国产精品一区二区电影| 亚洲自拍偷拍在线| 69av视频在线播放| 久久久国产精品x99av| 成人激情视频网| 91午夜理伦私人影院| 亚洲开心激情网| 国产精品视频精品视频| 亚洲自拍另类欧美丝袜| 亚洲女性裸体视频| 日韩激情av在线免费观看| 精品视频偷偷看在线观看| 精品国产成人av| 7m精品福利视频导航| 亚洲欧美中文字幕在线一区| 精品国产乱码久久久久久婷婷| 亚洲午夜av久久乱码| 中文字幕免费国产精品| 欧美日韩国产综合新一区| 中文字幕最新精品| 日韩少妇与小伙激情| 欧美亚洲在线播放| 久久手机免费视频| 久久久久久有精品国产| 欧美性xxxxx| 国产精品麻豆va在线播放| 精品亚洲一区二区| 国产精品自产拍在线观| 91精品久久久久久久| 亚洲国产欧美一区二区三区久久| 久久精品这里热有精品| 91九色视频在线| 日韩va亚洲va欧洲va国产| 91在线国产电影| 中文字幕在线国产精品| 97精品一区二区视频在线观看| 国产在线观看91精品一区| 麻豆国产va免费精品高清在线| 国产欧美在线视频| 热久久美女精品天天吊色| 免费99精品国产自在在线| 日韩大陆欧美高清视频区| 97在线观看免费高清| 亚洲精品福利视频| 久久久999成人| 亚洲精品久久久久| 精品视频在线观看日韩| 久久精品国产亚洲一区二区| 中文字幕日韩高清| 萌白酱国产一区二区| 国产精品久久久久久久午夜| 97精品国产aⅴ7777| 欧美国产第一页| 国产在线视频2019最新视频| 日韩精品免费在线| 久久久久99精品久久久久| 日韩高清av一区二区三区| 亚洲欧美成人精品| 国产mv免费观看入口亚洲| 最近2019年好看中文字幕视频| 久久精品视频播放| 欧美成人午夜激情| 成人欧美一区二区三区黑人孕妇| 国产成人精品优优av| 久久久在线免费观看| 色综合久久精品亚洲国产| 91国内在线视频| 国产精品专区h在线观看| 91豆花精品一区| 成人久久一区二区| 亚洲激情视频在线播放| 97在线免费观看视频| 深夜福利一区二区| 亚洲欧美日韩久久久久久| 久久久久久久久网站| 日韩精品欧美激情| 成人黄色影片在线| 欧美激情在线狂野欧美精品| 亚洲在线免费视频| 亚洲性无码av在线| 欧美色播在线播放| 国产精品成人免费电影| 成人性教育视频在线观看| 欧美国产日韩一区二区在线观看| 日韩国产精品一区| 正在播放欧美一区| 久久天天躁狠狠躁夜夜躁| 亚洲一级片在线看| 成人性生交大片免费看视频直播| 国产一区二区三区毛片| 欧美成aaa人片免费看| 成人h视频在线| 精品国产拍在线观看| 国产精欧美一区二区三区| 成人免费看黄网站| 成人网中文字幕| 一区二区亚洲精品国产| 欧美成人精品在线观看| 黑人极品videos精品欧美裸| 国产一区二区三区网站| 亚州欧美日韩中文视频| 亚洲色图狂野欧美| 九九热99久久久国产盗摄| 国产精品美女呻吟| 国产日韩中文字幕| 久久久久久91香蕉国产| 欧美日韩中国免费专区在线看| 夜夜嗨av一区二区三区四区| 久久综合久久八八| 伊人伊成久久人综合网小说| 精品久久久一区| 尤物yw午夜国产精品视频| 91精品视频免费| 精品亚洲一区二区| 国产精品wwww| 亚洲最大成人网色| 91干在线观看| 亚洲福利视频在线| 在线观看中文字幕亚洲| 日av在线播放中文不卡| 亚洲999一在线观看www| 色与欲影视天天看综合网| 欧美诱惑福利视频| 欧美另类69精品久久久久9999| 91国产精品91| 亚洲乱码国产乱码精品精| 日产精品久久久一区二区福利| 国产精品夫妻激情| 奇米4444一区二区三区| 久久精品国产一区| 午夜精品蜜臀一区二区三区免费| 91精品视频观看| 欧美性69xxxx肥| 欧美另类极品videosbest最新版本| 国产精品影片在线观看| 久久影视电视剧免费网站| 久久精品视频va| 91精品国产乱码久久久久久久久| 欧美精品久久久久| 亚洲第一精品夜夜躁人人躁| 麻豆国产精品va在线观看不卡| 国产精品美女久久久久久免费| 丝袜亚洲另类欧美重口| 国产小视频国产精品| 91九色综合久久| 一本一本久久a久久精品综合小说| 国产成一区二区| 欧美激情一级欧美精品| 久久精品中文字幕免费mv| 欧美日韩性生活视频| 亚洲国产精品热久久| 一区三区二区视频| 国产精品爽爽爽| 成人精品视频99在线观看免费| 精品美女久久久久久免费| 久久国产天堂福利天堂| 欧美孕妇与黑人孕交| 少妇激情综合网| 精品中文字幕久久久久久| 久久久精品久久久久| 久久九九全国免费精品观看| 97精品久久久中文字幕免费| 亚洲自拍在线观看|