<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C#對(duì)象映射器之Mapster

          共 2649字,需瀏覽 6分鐘

           ·

          2022-04-27 19:17

          簡(jiǎn)介

          Mapster是一個(gè)快,小巧,功能強(qiáng)大的對(duì)象映射.Net框架

          例子

          我有兩個(gè)Model類且他們的屬性一致,我們將 SourceObjectTest賦值給DestObjectTest該怎么做?

          SourceObjectTest?sourceObject?=?new?SourceObjectTest();
          sourceObject.Name?=?"張三";
          sourceObject.Age?=?new?List?{?20,?13,?26?};
          sourceObject.Address?=?"XX省XX市XX縣";
          sourceObject.Sex?=?"男";

          常規(guī)做法

          public?void?Routine(SourceObjectTest?sourceObject)
          {
          DestObjectTest?destObject?=?new?DestObjectTest();
          ?destObject.Name?=?sourceObject.Name;
          destObject.Sex?=?sourceObject.Sex;
          destObject.Address?=?sourceObject.Address;
          destObject.Age?=?sourceObject.Age;
          }

          這種類型的代碼寫(xiě)起來(lái)相當(dāng)枯燥乏味且累那么我們可不可以用第三方的庫(kù)來(lái)解決這種問(wèn)題呢,那肯定是可以的,像AutoMapper和Mapster就是解決這種問(wèn)題的,而我為什么選擇Mapster,主要還是Mapster性能更好!

          安裝Mapster包

          使用Mapster

          基本映射之映射到新對(duì)象

          ?public?void?BasicMappingNewObject(SourceObjectTest?sourceObject)
          ?{
          ????DestObjectTest?destObject=?sourceObject.Adapt();
          ?}

          基本映射之映射到現(xiàn)有對(duì)象

          ?public?void?BasicMappingExistObject(SourceObjectTest?sourceObject)
          ?{
          ???DestObjectTest?destObject?=?new?DestObjectTest();
          ???destObject.Name?=?"李四";
          ???destObject.Age?=?new?List?{?20?};
          ??destObject.Address?=?"中國(guó)XX省XX市XX縣";
          ??destObject.Sex?=?"女";????
          ??destObject?=?sourceObject.Adapt(destObject);
          ?}

          自定義映射

          當(dāng)我們的映射對(duì)象的屬性與源對(duì)象的屬性不一致時(shí)我們就可以使用!eg:SourceObjectTest的name屬性和DifferentDestObjectTest的UserName是一個(gè)意思,只是創(chuàng)建Model類的時(shí)候取得名字不一樣,這時(shí)候基本映射映射不了UserName字段,那我們就要使用自定義映射了!

          一:直接在 TypeAdapterConfig 配置對(duì)象的映射關(guān)系

          ?public?void?BasicMappingExtend(SourceObjectTest?sourceObject)
          {
          var?config?=?new?TypeAdapterConfig();
          config.ForType()
          ????????????.Map(dest?=>?dest.UserName,?src?=>?src.Name)
          ????????????.Map(dest?=>?dest.Address,?src?=>?src.Name?+?src.Address);
          var?mapper?=?new?Mapper(config);
          ?DifferentDestObjectTest?differentDestObjectTest?=?mapper.Map(sourceObject);
          }

          二:使用接口的方式

          ??public?class?DifferentDestObjectTestRegister?:?IRegister
          ????{
          ????????public?void?Register(TypeAdapterConfig?config)
          ????????{
          ????????????config.ForType()
          ??????????.Map(dest?=>?dest.UserName,?src?=>?src.Name)
          ??????????.Map(dest?=>?dest.Address,?src?=>?src.Name?+?src.Address);
          ????????}
          ????}
          ????
          ??public?void?BasicMappingExtend(SourceObjectTest?sourceObject)
          ????{
          ????????????var?config?=?new?TypeAdapterConfig();
          ????????????config.Scan(Assembly.GetExecutingAssembly());
          ????????????var?mapper?=?new?Mapper(config);
          ????????????DifferentDestObjectTest?differentDestObjectTest?=?mapper.Map(sourceObject);
          ????}

          三:使用映射配置

          ?????public?void?MappingConfig(SourceObjectTest?sourceObject)
          ????????{
          ????????????TypeAdapterConfig
          ??????????????.NewConfig()
          ??????????????.Map(dest?=>?dest.UserName,
          ??????????????????src?=>?src.Name);

          ????????DifferentDestObjectTest?differentDestObjectTest?=?TypeAdapter
          ????????.Adapt(sourceObject);
          ????????}

          當(dāng)然還有其它功能,可前往官網(wǎng)!-?傳送門(mén)!

          最后大家如果喜歡我的文章,還麻煩給個(gè)關(guān)注并點(diǎn)個(gè)贊, 希望net生態(tài)圈越來(lái)越好!


          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲AV无码成人精品一区色欲 | 青青草www | 视频亚洲无码 | 一区二区三区永久免费 | 先锋亚洲资源 |