中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Green.AgileMapper項目-新增DO和DTO代碼生成

發布時間:2020-06-26 03:34:00 來源:網絡 閱讀:378 作者:破狼 欄目:編程語言

     如果你還不了解Green.AgileMapper的用意,作用請先一步到上篇Green.AgileMapper開源項目的使用,如果你覺得運行時(Runtime)的Mapper效率存在問題,在這個版本中有了更新,新增了C#直接代碼的生成,這里的生成都已3.0后的擴展方法實現,你可以很方便的一句代碼實現兩者的轉化。

    代碼生成我本想利用T4模板,但是由于我們的項目IDE版本是VS2008,對于T4的參數傳遞支持還不是很友好,你可能說用AppDomain.SetData,或者CallContext.LogicalSetData,但是可惜我們的餓MappingRule是不可序列化的,所以最后我只得采用了字符串拼接最笨的辦法,為了應對生成策略不同,在這里我們加入了策略模式來應付,來看看代碼結構吧:

Green.AgileMapper項目-新增DO和DTO代碼生成

   在這里只支持對do的二級屬性映射為dto的平面屬性,全部針對IMappingRule生成代碼,在這里為了生成合法的代碼而非表達式,對以前的表達式進行了重新的標準約定,在代碼注釋。以及對上個版本的List轉換進行了多次重載,主要為了滿足DTo到DO對象的特殊要求,因為我們在領域開發存儲DTO的時候都是需要先取出DO對象在根據DTO在DO對象的基礎上進行修改,以便ORM領域框架或者UOW的跟蹤記錄。

下面看看任然是上個測試類模型的代碼生成(在這里測試DO,DTO類進行了重構為了更全面的測試,具體請看CodePlex http://agilemapper.codeplex.com/代碼):

 

  1. StudenDo stu = new StudenDo()   
  2.           {   
  3.               ID = 1,   
  4.               Name = "test1",   
  5.               Sex = Sex.女,   
  6.               Address = new Address()   
  7.               {   
  8.                   Country = "中國",   
  9.                   Province = "四川",   
  10.                   Street = "高新區"   
  11.               },   
  12.               CourseIds = new List<string>() { "1""2""3" },   
  13.               Propertys = new List<KeyValuePair>() { new KeyValuePair() { Key = "1", Value = "1" } },   
  14.               ContactWay = new ContactWay()   
  15.               {   
  16.                   Phone = "1111111111111111",   
  17.                   Email = "xxxx@12f",   
  18.                   QQ = "7889789999889"   
  19.               }   
  20.           };   
  21.           Func<StudenDo, StudenDo, bool> fun = (f, j) =&gt; f.ID == j.ID;   
  22.           var s = fun.ToString();   
  23.  
  24.           var mapper = ObjectMapperManager.Default.GetMapper<StudenDto, StudenDo>();   
  25.           mapper.AgileMapperTemplateStrategy.DefaultEqualExpression = "{0}.ID == {1}.ID && {1}.ID != 0";                    
  26.           var str1 = mapper.CodeGenerator();   
  27.           System.IO.File.Delete(@"E:\Project\OpenSource\AgileMapper\AgileMappper.Test\CodeTemplate.Test\1.cs");   
  28.           System.IO.File.AppendAllText(@"E:\Project\OpenSource\AgileMapper\AgileMappper.Test\CodeTemplate.Test\1.cs", str1);   
  29.  
  30.           var mapper1 = ObjectMapperManager.Default.GetMapper<ContactWayDto, ContactWay>();                      
  31.           str1 = mapper1.CodeGenerator();   
  32.           System.IO.File.Delete(@"E:\Project\OpenSource\AgileMapper\AgileMappper.Test\CodeTemplate.Test\2.cs");   
  33.           System.IO.File.AppendAllText(@"E:\Project\OpenSource\AgileMapper\AgileMappper.Test\CodeTemplate.Test\2.cs", str1);   
  34.  
  35.           var mapper2 = ObjectMapperManager.Default.GetMapper<KeyValuePairDto, KeyValuePair>();              
  36.           str1 = mapper2.CodeGenerator();   
  37.           System.IO.File.Delete(@"E:\Project\OpenSource\AgileMapper\AgileMappper.Test\CodeTemplate.Test\3.cs");   
  38.           System.IO.File.AppendAllText(@"E:\Project\OpenSource\AgileMapper\AgileMappper.Test\CodeTemplate.Test\3.cs", str1);  
  39.  

最后的生成文件:

  1. 1.cs:  
  2.  
  3. using System;   
  4. using System.Linq;   
  5. using System.Data;   
  6. using System.Collections.Generic;   
  7.  
  8. namespace Green.AgileMapper   
  9. {   
  10.     public static partial class AgileMapperMapping   
  11.     {   
  12.         /// <summary>   
  13.         /// Green.AgileMapper.Test.StudenDto  Warp fromObj Green.AgileMapper.Test.StudenDo;   
  14.         /// </summary>   
  15.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo</param>   
  16.         /// <returns>Green.AgileMapper.Test.StudenDto</returns>   
  17.         public static Green.AgileMapper.Test.StudenDto Warp(this Green.AgileMapper.Test.StudenDo domainObj)   
  18.         {   
  19.             var fromObj = new Green.AgileMapper.Test.StudenDto();   
  20.             fromObj.ID = domainObj.ID;   
  21.             fromObj.Name = domainObj.Name;   
  22.             fromObj.Sex = domainObj.Sex;   
  23.             if (domainObj.Address != null)   
  24.             {   
  25.                 fromObj.Country = domainObj.Address.Country;   
  26.                 fromObj.Province = domainObj.Address.Province;   
  27.             }   
  28.             fromObj.Particular = domainObj.Address.Country + " 國籍 " + domainObj.Address.Province + " 省 ";   
  29.             fromObj.FirstPropertyKey = domainObj.Propertys[0].Key;   
  30.             if (domainObj.ContactWay != null)   
  31.             {   
  32.                 fromObj.ContactWay = domainObj.ContactWay.Warp();   
  33.             }   
  34.             if (domainObj.CourseIds != null)   
  35.             {   
  36.                 fromObj.CourseIds = new List<System.String>();   
  37.                 foreach (var item_CourseIds in domainObj.CourseIds)   
  38.                 {   
  39.                     fromObj.CourseIds.Add(item_CourseIds);   
  40.                 }   
  41.             }   
  42.             if (domainObj.Propertys != null)   
  43.             {   
  44.                 fromObj.Propertys = domainObj.Propertys.Warp();   
  45.             }   
  46.             return fromObj;   
  47.         }   
  48.  
  49.         /// <summary>   
  50.         /// Green.AgileMapper.Test.StudenDto  Warp domainObj Green.AgileMapper.Test.StudenDo;   
  51.         /// </summary>   
  52.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo</param>   
  53.         /// <returns>fromObj</returns>   
  54.         public static void Warp(this Green.AgileMapper.Test.StudenDto fromObj, Green.AgileMapper.Test.StudenDo domainObj)   
  55.         {   
  56.             if (fromObj == null)   
  57.             {   
  58.                 return;   
  59.             }   
  60.             if (domainObj == null)   
  61.             {   
  62.                 domainObj = new Green.AgileMapper.Test.StudenDo();   
  63.             }   
  64.             domainObj.ID = fromObj.ID;   
  65.             domainObj.Name = fromObj.Name;   
  66.             domainObj.Sex = fromObj.Sex;   
  67.             if (domainObj.Address == null)   
  68.             {   
  69.                 domainObj.Address = new Green.AgileMapper.Test.Address();   
  70.             }   
  71.             domainObj.Address.Country = fromObj.Country;   
  72.             domainObj.Address.Province = fromObj.Province;   
  73.  
  74.             if (domainObj.ContactWay == null)   
  75.             {   
  76.                 domainObj.ContactWay = new Green.AgileMapper.Test.ContactWay();   
  77.             }   
  78.             fromObj.ContactWay.Warp(domainObj.ContactWay);   
  79.             if (fromObj.CourseIds != null)   
  80.             {   
  81.                 if (domainObj.CourseIds == null)   
  82.                 {   
  83.                     domainObj.CourseIds = new List<System.String>();   
  84.                 }   
  85.                 domainObj.CourseIds.Clear();   
  86.                 foreach (var item_CourseIds in fromObj.CourseIds)   
  87.                 {   
  88.                     domainObj.CourseIds.Add(item_CourseIds);   
  89.                 }   
  90.             }   
  91.             if (fromObj.Propertys != null)   
  92.             {   
  93.                 if (domainObj.Propertys == null)   
  94.                 {   
  95.                     domainObj.Propertys = new List<Green.AgileMapper.Test.KeyValuePair>();   
  96.                 }   
  97.                 fromObj.Propertys.Warp(domainObj.Propertys, (fromObjItem, domainObjItem) =&gt; fromObjItem.Key == domainObjItem.Key, true);   
  98.             }   
  99.  
  100.         }   
  101.  
  102.         /// <summary>   
  103.         /// Green.AgileMapper.Test.StudenDto collection Warp fromObj Green.AgileMapper.Test.StudenDo collection;   
  104.         /// </summary>   
  105.         /// <param name="form">Green.AgileMapper.Test.StudenDto collection</param>   
  106.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo collection</param>          
  107.         public static List<Green.AgileMapper.Test.StudenDto> Warp(this IList<Green.AgileMapper.Test.StudenDo> domainObj)   
  108.         {   
  109.             List<Green.AgileMapper.Test.StudenDto> froms = new List<Green.AgileMapper.Test.StudenDto>();   
  110.             domainObj.ToList().ForEach(t =&gt;   
  111.             {   
  112.                 froms.Add(Warp(t));   
  113.             });   
  114.             return froms;   
  115.         }   
  116.  
  117.         /// <summary>   
  118.         /// Green.AgileMapper.Test.StudenDto collection Warp domainObj Green.AgileMapper.Test.StudenDo collection;   
  119.         /// </summary>   
  120.         /// <param name="fromObj">Green.AgileMapper.Test.StudenDto collection</param>   
  121.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo collection</param>        
  122.         public static void Warp(this IList<Green.AgileMapper.Test.StudenDto> fromObj, IList<Green.AgileMapper.Test.StudenDo> domainObj)   
  123.         {   
  124.             fromObj.Warp(domainObj, (fromObjItem, domainObjItem) =&gt; fromObjItem.ID == domainObjItem.ID && domainObjItem.ID != 0, false);   
  125.         }   
  126.  
  127.         /// <summary>   
  128.         /// Green.AgileMapper.Test.StudenDto collection Warp domainObj Green.AgileMapper.Test.StudenDo collection;   
  129.         /// </summary>   
  130.         /// <param name="fromObj">Green.AgileMapper.Test.StudenDto collection</param>   
  131.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo collection</param>   
  132.         /// <param name="isDeleteNotInFromItem">Delete the item that not in From collection</param>             
  133.         public static void Warp(this IList<Green.AgileMapper.Test.StudenDto> fromObj, IList<Green.AgileMapper.Test.StudenDo> domainObj, bool isDeleteNotInFromItem)   
  134.         {   
  135.             fromObj.Warp(domainObj, (fromObjItem, domainObjItem) =&gt; fromObjItem.ID == domainObjItem.ID && domainObjItem.ID != 0, isDeleteNotInFromItem);   
  136.         }   
  137.  
  138.         /// <summary>   
  139.         /// Green.AgileMapper.Test.StudenDto collection Warp domainObj Green.AgileMapper.Test.StudenDo collection;   
  140.         /// </summary>   
  141.         /// <param name="fromObj">Green.AgileMapper.Test.StudenDto collection</param>   
  142.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo collection</param>   
  143.         /// <param name="equalPredicate">the from item equal to item expression</param>             
  144.         public static void Warp(this IList<Green.AgileMapper.Test.StudenDto> fromObj, IList<Green.AgileMapper.Test.StudenDo> domainObj, Func<Green.AgileMapper.Test.StudenDto, Green.AgileMapper.Test.StudenDo, bool> equalPredicate)   
  145.         {   
  146.             fromObj.Warp(domainObj, equalPredicate, false);   
  147.         }   
  148.  
  149.         /// <summary>   
  150.         /// Green.AgileMapper.Test.StudenDto collection Warp domainObj Green.AgileMapper.Test.StudenDo collection;   
  151.         /// </summary>   
  152.         /// <param name="fromObj">Green.AgileMapper.Test.StudenDto collection</param>   
  153.         /// <param name="domainObj">Green.AgileMapper.Test.StudenDo collection</param>   
  154.         /// <param name="equalPredicate">the from item equal to item expression</param>        
  155.         /// <param name="isDeleteNotInFromItem">Delete the item that not in From collection</param>       
  156.         public static void Warp(this IList<Green.AgileMapper.Test.StudenDto> fromObj, IList<Green.AgileMapper.Test.StudenDo> domainObj, Func<Green.AgileMapper.Test.StudenDto, Green.AgileMapper.Test.StudenDo, bool> equalPredicate, bool isDeleteNotInFromItem)   
  157.         {   
  158.             if (fromObj == null)   
  159.             {   
  160.                 return;   
  161.             }   
  162.  
  163.             if (domainObj == null)   
  164.             {   
  165.                 domainObj = new List<Green.AgileMapper.Test.StudenDo>();   
  166.             }   
  167.  
  168.             fromObj.ToList().ForEach(fromObjItem =&gt;   
  169.             {   
  170.                 Green.AgileMapper.Test.StudenDo toItem = default(Green.AgileMapper.Test.StudenDo);   
  171.                 if (equalPredicate != null)   
  172.                 {   
  173.                     toItem = domainObj.SingleOrDefault(domainObjItem =&gt; equalPredicate(fromObjItem, domainObjItem));   
  174.                 }   
  175.                 if (toItem == null)   
  176.                 {   
  177.                     toItem = new Green.AgileMapper.Test.StudenDo();   
  178.                     domainObj.Add(toItem);   
  179.                 }   
  180.                 Warp(fromObjItem, toItem);   
  181.             });   
  182.  
  183.             if (isDeleteNotInFromItem)   
  184.             {   
  185.                 domainObj.Where(domainObjItem =&gt; fromObj.FirstOrDefault(fromObjItem =&gt; equalPredicate(fromObjItem, domainObjItem)) == null)   
  186.                     .ToList().ForEach(t =&gt;   
  187.                     {   
  188.                         domainObj.Remove(t);   
  189.                     });   
  190.             }   
  191.         }   
  192.     }   
  193. }  
  194.  
  195.    
  196.  
  197. 2.cs  
  198.  
  199. using System;   
  200. using System.Linq;   
  201. using System.Data;   
  202. using System.Collections.Generic;   
  203.  
  204. namespace Green.AgileMapper   
  205. {   
  206.     public static partial class AgileMapperMapping   
  207.     {   
  208.         /// <summary>   
  209.         /// Green.AgileMapper.Test.ContactWayDto  Warp fromObj Green.AgileMapper.Test.ContactWay;   
  210.         /// </summary>   
  211.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay</param>   
  212.         /// <returns>Green.AgileMapper.Test.ContactWayDto</returns>   
  213.         public static Green.AgileMapper.Test.ContactWayDto Warp(this Green.AgileMapper.Test.ContactWay domainObj)   
  214.         {   
  215.             var fromObj = new Green.AgileMapper.Test.ContactWayDto();   
  216.             fromObj.Phone = domainObj.Phone;   
  217.             fromObj.Email = domainObj.Email;   
  218.             fromObj.QQ = domainObj.QQ;   
  219.             return fromObj;   
  220.         }   
  221.  
  222.         /// <summary>   
  223.         /// Green.AgileMapper.Test.ContactWayDto  Warp domainObj Green.AgileMapper.Test.ContactWay;   
  224.         /// </summary>   
  225.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay</param>   
  226.         /// <returns>fromObj</returns>   
  227.         public static void Warp(this Green.AgileMapper.Test.ContactWayDto fromObj, Green.AgileMapper.Test.ContactWay domainObj)   
  228.         {   
  229.             if (fromObj == null)   
  230.             {   
  231.                 return;   
  232.             }   
  233.             if (domainObj == null)   
  234.             {   
  235.                 domainObj = new Green.AgileMapper.Test.ContactWay();   
  236.             }   
  237.             domainObj.Phone = fromObj.Phone;   
  238.             domainObj.Email = fromObj.Email;   
  239.             domainObj.QQ = fromObj.QQ;   
  240.  
  241.         }   
  242.  
  243.         /// <summary>   
  244.         /// Green.AgileMapper.Test.ContactWayDto collection Warp fromObj Green.AgileMapper.Test.ContactWay collection;   
  245.         /// </summary>   
  246.         /// <param name="form">Green.AgileMapper.Test.ContactWayDto collection</param>   
  247.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay collection</param>          
  248.         public static List<Green.AgileMapper.Test.ContactWayDto> Warp(this IList<Green.AgileMapper.Test.ContactWay> domainObj)   
  249.         {   
  250.             List<Green.AgileMapper.Test.ContactWayDto> froms = new List<Green.AgileMapper.Test.ContactWayDto>();   
  251.             domainObj.ToList().ForEach(t =&gt;   
  252.             {   
  253.                 froms.Add(Warp(t));   
  254.             });   
  255.             return froms;   
  256.         }   
  257.  
  258.         /// <summary>   
  259.         /// Green.AgileMapper.Test.ContactWayDto collection Warp domainObj Green.AgileMapper.Test.ContactWay collection;   
  260.         /// </summary>   
  261.         /// <param name="fromObj">Green.AgileMapper.Test.ContactWayDto collection</param>   
  262.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay collection</param>        
  263.         public static void Warp(this IList<Green.AgileMapper.Test.ContactWayDto> fromObj, IList<Green.AgileMapper.Test.ContactWay> domainObj)   
  264.         {   
  265.             fromObj.Warp(domainObj, (fromObjItem, domainObjItem) =&gt; fromObjItem.Equals(domainObjItem), false);   
  266.         }   
  267.  
  268.         /// <summary>   
  269.         /// Green.AgileMapper.Test.ContactWayDto collection Warp domainObj Green.AgileMapper.Test.ContactWay collection;   
  270.         /// </summary>   
  271.         /// <param name="fromObj">Green.AgileMapper.Test.ContactWayDto collection</param>   
  272.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay collection</param>   
  273.         /// <param name="isDeleteNotInFromItem">Delete the item that not in From collection</param>             
  274.         public static void Warp(this IList<Green.AgileMapper.Test.ContactWayDto> fromObj, IList<Green.AgileMapper.Test.ContactWay> domainObj, bool isDeleteNotInFromItem)   
  275.         {   
  276.             fromObj.Warp(domainObj, (fromObjItem, domainObjItem) =&gt; fromObjItem.Equals(domainObjItem), isDeleteNotInFromItem);   
  277.         }   
  278.  
  279.         /// <summary>   
  280.         /// Green.AgileMapper.Test.ContactWayDto collection Warp domainObj Green.AgileMapper.Test.ContactWay collection;   
  281.         /// </summary>   
  282.         /// <param name="fromObj">Green.AgileMapper.Test.ContactWayDto collection</param>   
  283.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay collection</param>   
  284.         /// <param name="equalPredicate">the from item equal to item expression</param>             
  285.         public static void Warp(this IList<Green.AgileMapper.Test.ContactWayDto> fromObj, IList<Green.AgileMapper.Test.ContactWay> domainObj, Func<Green.AgileMapper.Test.ContactWayDto, Green.AgileMapper.Test.ContactWay, bool> equalPredicate)   
  286.         {   
  287.             fromObj.Warp(domainObj, equalPredicate, false);   
  288.         }   
  289.  
  290.         /// <summary>   
  291.         /// Green.AgileMapper.Test.ContactWayDto collection Warp domainObj Green.AgileMapper.Test.ContactWay collection;   
  292.         /// </summary>   
  293.         /// <param name="fromObj">Green.AgileMapper.Test.ContactWayDto collection</param>   
  294.         /// <param name="domainObj">Green.AgileMapper.Test.ContactWay collection</param>   
  295.         /// <param name="equalPredicate">the from item equal to item expression</param>        
  296.         /// <param name="isDeleteNotInFromItem">Delete the item that not in From collection</param>       
  297.         public static void Warp(this IList<Green.AgileMapper.Test.ContactWayDto> fromObj, IList<Green.AgileMapper.Test.ContactWay> domainObj, Func<Green.AgileMapper.Test.ContactWayDto, Green.AgileMapper.Test.ContactWay, bool> equalPredicate, bool isDeleteNotInFromItem)   
  298.         {   
  299.             if (fromObj == null)   
  300.             {   
  301.                 return;   
  302.             }   
  303.  
  304.             if (domainObj == null)   
  305.             {   
  306.                 domainObj = new List<Green.AgileMapper.Test.ContactWay>();   
  307.             }   
  308.  
  309.             fromObj.ToList().ForEach(fromObjItem =&gt;   
  310.             {   
  311.                 Green.AgileMapper.Test.ContactWay toItem = default(Green.AgileMapper.Test.ContactWay);   
  312.                 if (equalPredicate != null)   
  313.                 {   
  314.                     toItem = domainObj.SingleOrDefault(domainObjItem =&gt; equalPredicate(fromObjItem, domainObjItem));   
  315.                 }   
  316.                 if (toItem == null)   
  317.                 {   
  318.                     toItem = new Green.AgileMapper.Test.ContactWay();   
  319.                     domainObj.Add(toItem);   
  320.                 }   
  321.                 Warp(fromObjItem, toItem);   
  322.             });   
  323.  
  324.             if (isDeleteNotInFromItem)   
  325.             {   
  326.                 domainObj.Where(domainObjItem =&gt; fromObj.FirstOrDefault(fromObjItem =&gt; equalPredicate(fromObjItem, domainObjItem)) == null)   
  327.                     .ToList().ForEach(t =&gt;   
  328.                     {   
  329.                         domainObj.Remove(t);   
  330.                     });   
  331.             }   
  332.         }   
  333.     }   
  334. }  
  335.  
  336.    
  337.  
  338. 3.cs:  
  339.  
  340. using System;   
  341. using System.Linq;   
  342. using System.Data;   
  343. using System.Collections.Generic;   
  344.  
  345. namespace Green.AgileMapper   
  346. {   
  347.     public static partial class AgileMapperMapping   
  348.     {   
  349.         /// <summary>   
  350.         /// Green.AgileMapper.Test.KeyValuePairDto  Warp fromObj Green.AgileMapper.Test.KeyValuePair;   
  351.         /// </summary>   
  352.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair</param>   
  353.         /// <returns>Green.AgileMapper.Test.KeyValuePairDto</returns>   
  354.         public static Green.AgileMapper.Test.KeyValuePairDto Warp(this Green.AgileMapper.Test.KeyValuePair domainObj)   
  355.         {   
  356.             var fromObj = new Green.AgileMapper.Test.KeyValuePairDto();   
  357.             fromObj.Key = domainObj.Key;   
  358.             fromObj.Value = domainObj.Value;   
  359.             return fromObj;   
  360.         }   
  361.  
  362.         /// <summary>   
  363.         /// Green.AgileMapper.Test.KeyValuePairDto  Warp domainObj Green.AgileMapper.Test.KeyValuePair;   
  364.         /// </summary>   
  365.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair</param>   
  366.         /// <returns>fromObj</returns>   
  367.         public static void Warp(this Green.AgileMapper.Test.KeyValuePairDto fromObj, Green.AgileMapper.Test.KeyValuePair domainObj)   
  368.         {   
  369.             if (fromObj == null)   
  370.             {   
  371.                 return;   
  372.             }   
  373.             if (domainObj == null)   
  374.             {   
  375.                 domainObj = new Green.AgileMapper.Test.KeyValuePair();   
  376.             }   
  377.             domainObj.Key = fromObj.Key;   
  378.             domainObj.Value = fromObj.Value;   
  379.  
  380.         }   
  381.  
  382.         /// <summary>   
  383.         /// Green.AgileMapper.Test.KeyValuePairDto collection Warp fromObj Green.AgileMapper.Test.KeyValuePair collection;   
  384.         /// </summary>   
  385.         /// <param name="form">Green.AgileMapper.Test.KeyValuePairDto collection</param>   
  386.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair collection</param>          
  387.         public static List<Green.AgileMapper.Test.KeyValuePairDto> Warp(this IList<Green.AgileMapper.Test.KeyValuePair> domainObj)   
  388.         {   
  389.             List<Green.AgileMapper.Test.KeyValuePairDto> froms = new List<Green.AgileMapper.Test.KeyValuePairDto>();   
  390.             domainObj.ToList().ForEach(t =&gt;   
  391.             {   
  392.                 froms.Add(Warp(t));   
  393.             });   
  394.             return froms;   
  395.         }   
  396.  
  397.         /// <summary>   
  398.         /// Green.AgileMapper.Test.KeyValuePairDto collection Warp domainObj Green.AgileMapper.Test.KeyValuePair collection;   
  399.         /// </summary>   
  400.         /// <param name="fromObj">Green.AgileMapper.Test.KeyValuePairDto collection</param>   
  401.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair collection</param>        
  402.         public static void Warp(this IList<Green.AgileMapper.Test.KeyValuePairDto> fromObj, IList<Green.AgileMapper.Test.KeyValuePair> domainObj)   
  403.         {   
  404.             fromObj.Warp(domainObj, (fromObjItem, domainObjItem) =&gt; fromObjItem.Equals(domainObjItem), false);   
  405.         }   
  406.  
  407.         /// <summary>   
  408.         /// Green.AgileMapper.Test.KeyValuePairDto collection Warp domainObj Green.AgileMapper.Test.KeyValuePair collection;   
  409.         /// </summary>   
  410.         /// <param name="fromObj">Green.AgileMapper.Test.KeyValuePairDto collection</param>   
  411.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair collection</param>   
  412.         /// <param name="isDeleteNotInFromItem">Delete the item that not in From collection</param>             
  413.         public static void Warp(this IList<Green.AgileMapper.Test.KeyValuePairDto> fromObj, IList<Green.AgileMapper.Test.KeyValuePair> domainObj, bool isDeleteNotInFromItem)   
  414.         {   
  415.             fromObj.Warp(domainObj, (fromObjItem, domainObjItem) =&gt; fromObjItem.Equals(domainObjItem), isDeleteNotInFromItem);   
  416.         }   
  417.  
  418.         /// <summary>   
  419.         /// Green.AgileMapper.Test.KeyValuePairDto collection Warp domainObj Green.AgileMapper.Test.KeyValuePair collection;   
  420.         /// </summary>   
  421.         /// <param name="fromObj">Green.AgileMapper.Test.KeyValuePairDto collection</param>   
  422.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair collection</param>   
  423.         /// <param name="equalPredicate">the from item equal to item expression</param>             
  424.         public static void Warp(this IList<Green.AgileMapper.Test.KeyValuePairDto> fromObj, IList<Green.AgileMapper.Test.KeyValuePair> domainObj, Func<Green.AgileMapper.Test.KeyValuePairDto, Green.AgileMapper.Test.KeyValuePair, bool> equalPredicate)   
  425.         {   
  426.             fromObj.Warp(domainObj, equalPredicate, false);   
  427.         }   
  428.  
  429.         /// <summary>   
  430.         /// Green.AgileMapper.Test.KeyValuePairDto collection Warp domainObj Green.AgileMapper.Test.KeyValuePair collection;   
  431.         /// </summary>   
  432.         /// <param name="fromObj">Green.AgileMapper.Test.KeyValuePairDto collection</param>   
  433.         /// <param name="domainObj">Green.AgileMapper.Test.KeyValuePair collection</param>   
  434.         /// <param name="equalPredicate">the from item equal to item expression</param>        
  435.         /// <param name="isDeleteNotInFromItem">Delete the item that not in From collection</param>       
  436.         public static void Warp(this IList<Green.AgileMapper.Test.KeyValuePairDto> fromObj, IList<Green.AgileMapper.Test.KeyValuePair> domainObj, Func<Green.AgileMapper.Test.KeyValuePairDto, Green.AgileMapper.Test.KeyValuePair, bool> equalPredicate, bool isDeleteNotInFromItem)   
  437.         {   
  438.             if (fromObj == null)   
  439.             {   
  440.                 return;   
  441.             }   
  442.  
  443.             if (domainObj == null)   
  444.             {   
  445.                 domainObj = new List<Green.AgileMapper.Test.KeyValuePair>();   
  446.             }   
  447.  
  448.             fromObj.ToList().ForEach(fromObjItem =&gt;   
  449.             {   
  450.                 Green.AgileMapper.Test.KeyValuePair toItem = default(Green.AgileMapper.Test.KeyValuePair);   
  451.                 if (equalPredicate != null)   
  452.                 {   
  453.                     toItem = domainObj.SingleOrDefault(domainObjItem =&gt; equalPredicate(fromObjItem, domainObjItem));   
  454.                 }   
  455.                 if (toItem == null)   
  456.                 {   
  457.                     toItem = new Green.AgileMapper.Test.KeyValuePair();   
  458.                     domainObj.Add(toItem);   
  459.                 }   
  460.                 Warp(fromObjItem, toItem);   
  461.             });   
  462.  
  463.             if (isDeleteNotInFromItem)   
  464.             {   
  465.                 domainObj.Where(domainObjItem =&gt; fromObj.FirstOrDefault(fromObjItem =&gt; equalPredicate(fromObjItem, domainObjItem)) == null)   
  466.                     .ToList().ForEach(t =&gt;   
  467.                     {   
  468.                         domainObj.Remove(t);   
  469.                     });   
  470.             }   
  471.         }   
  472.     }   
  473. }   
  474.  

  在這里的代碼生產后很亂并未格式化處理,需要我們在VS中自動Ctrl+K+D格式,如果你希望生成時候就幫助格式化了的話,你可以參見工具CoolFormat源代碼格式化,安裝工具利用CMD命令批量格式化(可以參見百度百科:http://baike.baidu.com/view/4367725.htm)。在項目暫不會考慮這塊,如果你有興趣的可以先幫助完成,謝謝。

具體請參見項目,存在任何問題或者bug可以隨時給我留言,謝謝。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴城市| 平顺县| 武清区| 新蔡县| 平利县| 丰顺县| 漳浦县| 乌拉特中旗| 广汉市| 吉安市| 都安| 龙南县| 贡山| 长丰县| 桑植县| 长治县| 新安县| 澄城县| 清原| 昌黎县| 宜黄县| 绥德县| 原平市| 信丰县| 垣曲县| 方正县| 长岭县| 株洲市| 厦门市| 都昌县| 常德市| 获嘉县| 芜湖市| 郁南县| 巴林左旗| 永和县| 正蓝旗| 周至县| 巢湖市| 平遥县| 阿瓦提县|