索引:html
目錄索引spa
一.API 列表code
.DeepClone()htm
用於 Model / Entity / ... ... 等引用類型對象的深度克隆對象
特性說明blog
1.不須要對對象作任何特殊處理,直接 .DeepClone() 便可獲得該對象的深度克隆索引
2.不受對象層次深度限制,都可實現深度克隆(下面會給出幾個簡單示例 ... ...)get
二.API 使用string
1.命名空間,只需:it
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 週六