<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      AutoMapper簡(jiǎn)明教程(學(xué)習(xí)筆記)

             最近做項(xiàng)目,需要把DataTable中的數(shù)據(jù)強(qiáng)類(lèi)型化.于是試用了下比較常用的AutoMapper,通過(guò)看代碼中附帶的Demo與網(wǎng)上的教程,也算能夠勉強(qiáng)使用了,現(xiàn)將學(xué)習(xí)筆記記錄如下:

       


      namespace ConsoleApplication1
      {
          class Program
          {
              static void Main(string[] args)
              {
                  //1.普通轉(zhuǎn)換
                  Name name1 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .BeforeMap((name, nameDto) => Console.WriteLine("hello world before"))
                      .AfterMap((name, nameDto) => Console.WriteLine("hello world after"));
                  NameDto nameDto1 = Mapper.Map<Name, NameDto>(name1);
                  Console.WriteLine("1");
                  Console.WriteLine(nameDto1.FirstName + nameDto1.LastName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //整體設(shè)置
                  
      //2.整體即時(shí)轉(zhuǎn)換
                  Mapper.Reset();
                  Name name2 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ConstructUsing(name => new NameDto() { AllName = name.FirstName + name.LastName });
                  NameDto nameDto2 = Mapper.Map<Name, NameDto>(name2);
                  Console.WriteLine("2");
                  Console.WriteLine(nameDto2.AllName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //3.整體通過(guò)TypeConverter類(lèi)型轉(zhuǎn)換
                  Mapper.Reset();
                  Name name3 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ConvertUsing<NameConverter>();
                  NameDto nameDto3 = Mapper.Map<Name, NameDto>(name3);
                  Console.WriteLine("3");
                  Console.WriteLine(nameDto3.AllName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //單屬性設(shè)置
                  
      //4.屬性條件轉(zhuǎn)換
                  Mapper.Reset();
                  Name name4 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.FirstName, opt => opt.Condition(name => !name.FirstName.Equals("l", StringComparison.OrdinalIgnoreCase)));
                  NameDto nameDto4 = Mapper.Map<Name, NameDto>(name4);
                  Console.WriteLine("4");
                  Console.WriteLine(string.IsNullOrEmpty(nameDto4.FirstName));
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //5.屬性忽略
                  Mapper.Reset();
                  Name name5 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.FirstName, opt => opt.Ignore());
                  NameDto nameDto5 = Mapper.Map<Name, NameDto>(name5);
                  Console.WriteLine("5");
                  Console.WriteLine(string.IsNullOrEmpty(nameDto5.FirstName));
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //6.屬性轉(zhuǎn)換
                  Mapper.Reset();
                  Name name6 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.AllName, opt => opt.MapFrom(name => name.FirstName + name.LastName));
                  NameDto nameDto6 = Mapper.Map<Name, NameDto>(name6);
                  Console.WriteLine("6");
                  Console.WriteLine(nameDto6.AllName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //7.屬性通過(guò)ValueResolver轉(zhuǎn)換
                  Mapper.Reset();
                  Name name7 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, StoreDto>()
                      .ForMember(storeDto => storeDto.Name, opt => opt.ResolveUsing<NameResolver>());
                  StoreDto store1 = Mapper.Map<Name, StoreDto>(name7);
                  Console.WriteLine("7");
                  Console.WriteLine(store1.Name.FirstName + store1.Name.LastName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //8.屬性填充固定值
                  Mapper.Reset();
                  Name name8 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.AllName, opt => opt.UseValue<string>("ljzforever"));
                  NameDto nameDto8 = Mapper.Map<Name, NameDto>(name8);
                  Console.WriteLine("8");
                  Console.WriteLine(nameDto8.AllName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //9.屬性格式化
                  Mapper.Reset();
                  Name name9 = new Name() { FirstName = "L", LastName = "jz" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.FirstName, opt => opt.AddFormatter<StringFormatter>());
                  NameDto nameDto9 = Mapper.Map<Name, NameDto>(name9);
                  Console.WriteLine("9");
                  Console.WriteLine(nameDto9.FirstName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //10.屬性null時(shí)的默認(rèn)值
                  Mapper.Reset();
                  Name name10 = new Name() { FirstName = "L" };
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.LastName, opt => opt.NullSubstitute("jz"));
                  NameDto nameDto10 = Mapper.Map<Name, NameDto>(name10);
                  Console.WriteLine("10");
                  Console.WriteLine(nameDto10.LastName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //其它設(shè)置與特性
                  
      //11.轉(zhuǎn)換匿名對(duì)象
                  Mapper.Reset();
                  object name11 = new { FirstName = "L", LastName = "jz" };
                  NameDto nameDto11 = Mapper.DynamicMap<NameDto>(name11);
                  Console.WriteLine("11");
                  Console.WriteLine(nameDto11.FirstName + nameDto11.LastName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //12.轉(zhuǎn)換DataTable
                  Mapper.Reset();
                  DataTable dt = new DataTable();
                  dt.Columns.Add("FirstName"typeof(string));
                  dt.Columns.Add("LastName"typeof(string));
                  dt.Rows.Add("L""jz");
                  List<NameDto> nameDto12 = Mapper.DynamicMap<IDataReader, List<NameDto>>(dt.CreateDataReader());
                  Console.WriteLine("12");
                  Console.WriteLine(nameDto12[0].FirstName + nameDto12[0].LastName);
                  Console.WriteLine();
                  //Console.ReadKey();
                  
      //emitMapper error
                  
      //List<NameDto> nameDto20 = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<IDataReader, List<NameDto>>().Map(dt.CreateDataReader());


                  
      //13.轉(zhuǎn)化存在的對(duì)象
                  Mapper.Reset();
                  Mapper.CreateMap<Name, NameDto>()
                      .ForMember(name => name.LastName, opt => opt.Ignore());
                  Name name13 = new Name() { FirstName = "L" };
                  NameDto nameDto13 = new NameDto() { LastName = "jz" };
                  Mapper.Map<Name, NameDto>(name13, nameDto13);
                  //nameDto13 = Mapper.Map<Name, NameDto>(name13);//注意,必需使用上面的寫(xiě)法,不然nameDto13對(duì)象的LastName屬性會(huì)被覆蓋
                  Console.WriteLine("13");
                  Console.WriteLine(nameDto13.FirstName + nameDto13.LastName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //14.Flatten特性
                  Mapper.Reset();
                  Mapper.CreateMap<Store, FlattenName>();
                  Store store2 = new Store() { Name = new Name() { FirstName = "L", LastName = "jz" } };
                  FlattenName nameDto14 = Mapper.Map<Store, FlattenName>(store2);
                  Console.WriteLine("14");
                  Console.WriteLine(nameDto14.NameFirstname + nameDto14.NameLastName);
                  Console.WriteLine();
                  //Console.ReadKey();

                  
      //15.將Dictionary轉(zhuǎn)化為對(duì)象,現(xiàn)在還不支持
                  Mapper.Reset();
                  Mapper.CreateMap<Dictionary<stringobject>, Name>();
                  Dictionary<stringobject> dict = new Dictionary<stringobject>();
                  dict.Add("FirstName""L");
                  //Name name15 = Mapper.DynamicMap<Dictionary<string, object>, Name>(dict);
                  Name name15 = Mapper.Map<Dictionary<stringobject>, Name>(dict);
                  Console.WriteLine("15");
                  Console.WriteLine(name15.FirstName);
                  Console.WriteLine();
                  Console.ReadKey();
              }
          }

          
          public class Store
          {
              public Name Name { getset; }
              public int Age { getset; }
          }

          public class Name
          {
              public string FirstName { getset; }
              public string LastName { getset; }
          }

          public class StoreDto
          {
              public NameDto Name { getset; }
              public int Age { getset; }
          }

          public class NameDto
          {
              public string FirstName { getset; }
              public string LastName { getset; }
              public string AllName { getset; }
          }

          public class FlattenName
          {
              public string NameFirstname { getset; }
              public string NameLastName { getset; }
          }

          public class NameConverter : TypeConverter<Name, NameDto>
          {
              protected override NameDto ConvertCore(Name source)
              {
                  return new NameDto() { AllName = source.FirstName + source.LastName };
              }
          }

          public class NameResolver : ValueResolver<Name, NameDto>
          {
              protected override NameDto ResolveCore(Name source)
              {
                  return new NameDto() { FirstName = source.FirstName, LastName = source.LastName };
              }
          }

          public class NameFormatter : ValueFormatter<NameDto>
          {
              protected override string FormatValueCore(NameDto name)
              {
                  return name.FirstName + name.LastName;
              }
          }

          public class StringFormatter : ValueFormatter<string>
          {
              protected override string FormatValueCore(string name)
              {
                  return name + "-";
              }
          }
      }

       

       

            比較遺憾的是現(xiàn)在還不支持將Directory轉(zhuǎn)化為對(duì)象

            參考的文章:

      1. 使用AutoMapper實(shí)現(xiàn)Dto和Model的自由轉(zhuǎn)換
      2. 6
      posted @ 2011-12-29 00:22  永遠(yuǎn)的阿哲  閱讀(7075)  評(píng)論(5)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲一区在线成人av| 久久这里只精品国产2| 成人动漫综合网| 国产日韩综合av在线| 国产午夜精品一区二区三区不卡 | 成人精品网一区二区三区| 在线看免费无码av天堂| 四虎库影成人在线播放| 人妻中文字幕不卡精品| 亚洲国产精品久久久天堂麻豆宅男 | 亚洲中文字幕无码爆乳app| 国产成人无码A区在线观| 七台河市| 国产成人av免费观看| 在线观看视频一区二区三区| 国产美女在线精品免费观看| 亚洲AV午夜成人无码电影| 人妻久久久一区二区三区| 日韩中文字幕一二三视频| 黑人巨茎大战欧美白妇| 一道本AV免费不卡播放| 国产11一12周岁女毛片| 亚洲成人av在线资源网| 日韩人妻无码精品久久| 午夜精品久久久久久久爽| 熟女系列丰满熟妇AV| 光棍天堂在线手机播放免费| 亚洲十八禁一区二区三区| 自拍亚洲一区欧美另类 | 人妻偷拍一区二区三区| 国产毛片三区二区一区| 国产精品国产三级国产专| 日韩伦理片| 麻豆tv入口在线看| 亚洲色成人一区二区三区 | 日本五十路熟女一区二区| 麻豆妓女爽爽一区二区三| 亚洲精品一二三四区| 综合欧美视频一区二区三区| 国产黄色一区二区三区四区| 免费VA国产高清大片在线|