索引: 目錄索引 一.API 列表 .DeepClone() 用於 Model / Entity / ... ... 等引用類型對象的深度克隆 特性說明 1.不需要對對象做任何特殊處理,直接 .DeepClone() 即可得到該對象的深度克隆 2.不受對象層次深度限制,均可實現深度克隆(下麵會給出幾 ...
索引:
一.API 列表
.DeepClone()
用於 Model / Entity / ... ... 等引用類型對象的深度克隆
特性說明
1.不需要對對象做任何特殊處理,直接 .DeepClone() 即可得到該對象的深度克隆
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 周六