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

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

AutoMapper(六)

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

返回總目錄


List和數組

AutoMapper只要求元素類型的配置而不要求可能會用到的任何數組或者list類型。比如,我們有一個簡單的源和目標類型:

public class Source{    public int Value { get; set; }}public class Destination{    public int Value { get; set; }}

支持所有的基本泛型集合,代碼如下:

class PRogram{    static void Main(string[] args)    {        Mapper.CreateMap<Source, Destination>();        var sources = new[]        {            new Source() {Value = 1},            new Source() {Value = 2},            new Source() {Value = 3},        };        IEnumerable<Destination> iEnumerableDests= Mapper.Map<IEnumerable<Destination>>(sources);        ICollection<Destination> iCollectionDests= Mapper.Map<ICollection<Destination>>(sources);        IList<Destination> iListDests= Mapper.Map<IList<Destination>>(sources);        List<Destination> listDests= Mapper.Map<List<Destination>>(sources);        Destination[] destsArr= Mapper.Map<Destination[]>(sources);        //這里只舉兩個例子,其他集合同理        foreach (var dest in iCollectionDests)        {            Console.Write(dest.Value+",");        }        Console.WriteLine();        foreach (var dest in destsArr)        {            Console.Write(dest.Value + ",");        }        Console.Read();    }}

以上代碼是集合和集合之間的映射,但是映射的配置CreateMap方法中只是配置的是類型之間的映射,而沒有設計任何集合類型。

測試結果如下,可見集合之間映射成功:

image

具體來說,支持的源集合類型包括:

  • IEnumerable
  • IEnumerable<T>
  • ICollection
  • ICollection<T>
  • IList
  • IList<T>
  • List<T>
  • Arrays

集合中的多態元素類型

很多時候,在我們的源和目標類型中可能有一個類型層次關系。AutoMapper支持多態數組和集合,因此如果發現派生的源或者目標類型,就會使用它們。

public class ParentSource{    public int Value1 { get; set; }}public class ChildSource : ParentSource{    public int Value2 { get; set; }}public class ParentDestination{    public int Value1 { get; set; }}public class ChildDestination : ParentDestination{    public int Value2 { get; set; }}

AutoMapper仍然要求顯示配置孩子映射,因為它不能“猜出”具體使用哪一個孩子目標映射。

在Main方法中添加如下代碼:

Mapper.Initialize(c =>{    c.CreateMap<ParentSource, ParentDestination>()        .Include<ChildSource, ChildDestination>();    c.CreateMap<ChildSource, ChildDestination>();});var sources = new[]{    new ParentSource(){Value1 = 11},    new ChildSource(){Value2 = 22},    new ParentSource(),};var dests = Mapper.Map<ParentDestination[]>(sources);Console.WriteLine(dests[0]);Console.WriteLine(dests[1]);Console.WriteLine(dests[2]);

測試結果如下:

image

上面我們創建了一個源的數組,其中包含兩個ParentSource和一個ChildSource,所以兩個ParentSource成功地映射到了ParentDestination,而CreateMap配置中,ParentSource到ParentDestination的映射配置包含了ChildSource到ChildDestination的配置,所以執行Mapper.Map<ParentDestination[]>(sources)的時候,也可以將ChildSource映射到ChildDestination。

映射繼承

在派生類中標明繼承

上面的代碼,是在基類中配置繼承的,除此之外,也可以在派生類中配置繼承:

//在基類中配置繼承 Mapper.Initialize(c => {     c.CreateMap<ParentSource, ParentDestination>()         .Include<ChildSource, ChildDestination>();     c.CreateMap<ChildSource, ChildDestination>(); }); //在派生類中配置繼承 Mapper.Initialize(c => {     c.CreateMap<ParentSource, ParentDestination>();     c.CreateMap<ChildSource, ChildDestination>()         .IncludeBase<ParentSource, ParentDestination>(); });

繼承映射屬性

這里介紹一下額外的復雜性,因為一個屬性映射時可以有多種方式。下面是這些源的優先級:

  • 顯式映射 (使用.MapFrom())
  • 繼承的顯式映射 
  • 慣例映射 (通過慣例匹配的屬性)
  • 忽略的屬性映射

下面來演示一下:

這里還是用上面定義的四個類:Order,OrderDto,PCOrder,MobileOrder:

//領域對象public class Order { }//電腦端訂單public class PCOrder : Order{    public string Referrer { get; set; }}//手機訂單public class MobileOrder : Order { }//Dtospublic class OrderDto{    public string Referrer { get; set; }}

配置映射的方法使用的是在父類中配置繼承映射

//在父類中配置繼承映射Mapper.CreateMap<Order, OrderDto>()    .Include<PCOrder,OrderDto>()    .Include<MobileOrder,OrderDto>()    .ForMember(o => o.Referrer, m => m.Ignore());//這里配置了忽略目標屬性Referrer的映射Mapper.CreateMap<PCOrder,OrderDto>();Mapper.CreateMap<MobileOrder, OrderDto>();
// 執行映射var order = new PCOrder() { Referrer = "天貓" };var mapped = Mapper.Map<OrderDto>(order);Console.WriteLine(mapped.Referrer);

執行結果如下:

image

注意在我們的映射配置中,我們已經忽略了Referrer(因為Order基類中不存在這個屬性),但是在基類的映射中,慣例比忽略的屬性有更高的優先級,因而屬性仍然得到了映射。


上一篇:初探C#

下一篇:PDF文件分割和合并

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人情趣片在线观看免费| 91高清视频免费| 日韩一区视频在线| 久久久久久国产三级电影| 2019中文字幕在线免费观看| 欧美黑人xxxⅹ高潮交| 91九色国产在线| 欧美日韩美女视频| 亚洲精品少妇网址| 亚洲欧美国产va在线影院| 国产日韩中文在线| 综合欧美国产视频二区| 日韩av免费看网站| 正在播放欧美一区| 97人洗澡人人免费公开视频碰碰碰| 欧美最顶级丰满的aⅴ艳星| 久久久免费观看| 国产一区二区成人| 色无极影院亚洲| 亚洲国产成人精品一区二区| 久久视频精品在线| 中文字幕一精品亚洲无线一区| 亚洲综合在线播放| 国产精品女人久久久久久| 欧美视频在线观看免费| 日韩麻豆第一页| 色中色综合影院手机版在线观看| 中文字幕免费国产精品| 欧美一区亚洲一区| 日韩人体视频一二区| 国产精品激情av在线播放| 久久久久久久久91| 亚洲级视频在线观看免费1级| 精品久久久久久久久久ntr影视| 福利视频第一区| 亚洲石原莉奈一区二区在线观看| 亚洲精品99久久久久| 亚洲的天堂在线中文字幕| 欧美日韩在线视频一区| 国内外成人免费激情在线视频| 久久中文字幕视频| 亚洲最大激情中文字幕| 色777狠狠综合秋免鲁丝| 欧美巨猛xxxx猛交黑人97人| 欧美成人高清视频| 国产91久久婷婷一区二区| 亚洲激情 国产| 国产不卡精品视男人的天堂| 久久久电影免费观看完整版| 国产精品美腿一区在线看| 日韩精品欧美激情| 国产精品91一区| 亚洲三级免费看| 欧美电影免费观看| 亚洲第一二三四五区| 91wwwcom在线观看| 欧美电影免费观看电视剧大全| 91豆花精品一区| 久久躁狠狠躁夜夜爽| 久久精品99久久久久久久久| 亚洲国产另类 国产精品国产免费| 在线视频免费一区二区| 亚洲福利视频专区| 国产精品jizz在线观看麻豆| 国产亚洲视频中文字幕视频| 亚洲视频在线免费观看| 国产亚洲欧洲在线| 热久久免费视频精品| 中文字幕欧美国内| 久久伊人色综合| 亚洲国产精品国自产拍av秋霞| 国产91成人在在线播放| 超薄丝袜一区二区| 原创国产精品91| 国产精品视频xxxx| 亚洲综合在线播放| 亚洲一区二区久久久久久| 在线观看欧美日韩| 久久99热精品| 久久久综合av| 中文亚洲视频在线| 久久精品国亚洲| xxxxxxxxx欧美| 色99之美女主播在线视频| 北条麻妃在线一区二区| 欧美电影《睫毛膏》| 91人成网站www| 欧美日韩福利电影| 久久亚洲精品网站| 午夜精品福利在线观看| 国产精品久久久精品| 国产在线拍偷自揄拍精品| 国产精品va在线播放我和闺蜜| 神马国产精品影院av| 欧美日韩亚洲激情| 69国产精品成人在线播放| 亚洲深夜福利在线| 亚洲尤物视频网| 欧美午夜视频在线观看| 中文字幕亚洲综合久久筱田步美| 国产一区二区香蕉| 亚洲精品国产成人| 欧美成人自拍视频| 精品自在线视频| 欧美日韩成人在线视频| www.美女亚洲精品| 国产伦精品一区二区三区精品视频| 亚洲国产精品嫩草影院久久| 亚洲在线观看视频网站| 欧美在线激情网| 日韩欧美一区二区在线| 国产成人精品优优av| 成人免费淫片视频软件| 国产丝袜视频一区| 日韩高清电影免费观看完整| 久久国产视频网站| 国产欧美亚洲精品| 久久久精品久久久| 日韩av在线天堂网| 国产精品1区2区在线观看| 国产精品视频专区| 国产成人精品国内自产拍免费看| 中文字幕亚洲一区二区三区五十路| 国产亚洲精品久久久| 久久久久久久久久国产精品| 国产精品视频区1| 在线观看久久av| 热re91久久精品国99热蜜臀| 久久久久99精品久久久久| 亚洲国产精品一区二区三区| 国产精品视频精品视频| 91av视频在线播放| 久久99久国产精品黄毛片入口| 国产69久久精品成人看| 亚洲韩国日本中文字幕| 欧美与黑人午夜性猛交久久久| 色噜噜亚洲精品中文字幕| 九九热视频这里只有精品| 91亚洲精品久久久久久久久久久久| 91老司机在线| 一区二区亚洲欧洲国产日韩| 日本欧美中文字幕| 国产成人福利网站| 成人自拍性视频| 欧美日韩中文字幕在线视频| 亚洲自拍偷拍一区| 亚洲欧美日韩精品久久奇米色影视| 欧美国产在线电影| 成人激情综合网| 91美女片黄在线观| 亚洲性av网站| 欧美精品成人在线| 国产综合在线视频| 中文在线资源观看视频网站免费不卡| 亚洲成人av片| 正在播放欧美视频| 欧美日韩福利视频| 精品久久久在线观看| 国产精品欧美亚洲777777| 亚洲精品乱码久久久久久金桔影视| 亚洲精品久久久一区二区三区| 欧美性理论片在线观看片免费| 久久久噜噜噜久久中文字免| 91av在线影院|