MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用

匿名 (未验证) 提交于 2019-12-02 22:06:11

索引:

目录索引

一.API 列表

  .DeepClone()

    用于 Model / Entity / ... ... 等引用类型对象的深度克隆

  特性说明

    1.不需要对对象做任何特殊处理

    2.不受对象层次深度限制,均可实现深度克隆(下面会给出几个简单示例 ... ...)

二.API 使用

  1.命名空间,只需:

1 using MyDAL.ModelTools;

  2.被深度克隆的对象只需是一个 class ,如下:

1     public class ModelEntity 2     { 3         public int ValueField { get; set; } 4  5         public string ReferenceField { get; set; } 6  7         public ModelEntity ObjectField { get; set; } 8     }

  3.深度克隆 / 深度复制 示例

 1             // 对象准备  2             var obj = new ModelEntity  3             {  4                 ValueField = 10,  5                 ReferenceField = "源值10",  6                 ObjectField = new ModelEntity  7                 {  8                     ValueField = 11,  9                     ReferenceField = "源值11", 10                     ObjectField = new ModelEntity 11                     { 12                         ValueField = 12, 13                         ReferenceField = "源值12" 14                     } 15                 } 16             }; 17  18             // 深度克隆 19             var cloneObj = obj.DeepClone(); 20  21             // 源对象 值展示 22             Console.WriteLine(obj.ValueField);   // 10 23             Console.WriteLine(obj.ReferenceField);  // 源值10 24             Console.WriteLine(obj.ObjectField.ValueField);  // 11 25             Console.WriteLine(obj.ObjectField.ReferenceField);  // 源值11 26             Console.WriteLine(obj.ObjectField.ObjectField.ValueField);  // 12 27             Console.WriteLine(obj.ObjectField.ObjectField.ReferenceField);  // 源值12 28  29             // 克隆对象 值展示 30             Console.WriteLine(cloneObj.ValueField);  // 10 31             Console.WriteLine(cloneObj.ReferenceField);  // 源值10 32             Console.WriteLine(cloneObj.ObjectField.ValueField);  // 11 33             Console.WriteLine(cloneObj.ObjectField.ReferenceField);  // 源值11 34             Console.WriteLine(cloneObj.ObjectField.ObjectField.ValueField);  // 12 35             Console.WriteLine(cloneObj.ObjectField.ObjectField.ReferenceField);  // 源值12 36  37             // 变更 克隆对象 的值 38             cloneObj.ReferenceField = "新值10"; 39             cloneObj.ObjectField.ReferenceField = "新值11"; 40             cloneObj.ObjectField.ObjectField.ReferenceField = "新值12"; 41  42             // 源对象 值展示 43             Console.WriteLine(obj.ValueField);   // 10 44             Console.WriteLine(obj.ReferenceField);  // 源值10 45             Console.WriteLine(obj.ObjectField.ValueField);  // 11 46             Console.WriteLine(obj.ObjectField.ReferenceField);  // 源值11 47             Console.WriteLine(obj.ObjectField.ObjectField.ValueField);  // 12 48             Console.WriteLine(obj.ObjectField.ObjectField.ReferenceField);  // 源值12 49  50             // 克隆对象 值展示 51             Console.WriteLine(cloneObj.ValueField);  // 10 52             Console.WriteLine(cloneObj.ReferenceField);  // 新值10 53             Console.WriteLine(cloneObj.ObjectField.ValueField);  // 11 54             Console.WriteLine(cloneObj.ObjectField.ReferenceField);  // 新值11 55             Console.WriteLine(cloneObj.ObjectField.ObjectField.ValueField);  // 12 56             Console.WriteLine(cloneObj.ObjectField.ObjectField.ReferenceField);  // 新值12

                                         蒙

                                    2019-03-09 15:22 周六

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!