MyDAL - 引用類型對象 .DeepClone() 深度克隆[深度複製] 工具 使用

索引: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 週六

相關文章
相關標籤/搜索