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

时间:2020-12-28 16:28:50

索引:

目录索引

一.API 列表

  .DeepClone()

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

  特性说明

    1.不需要对对象做任何特殊处理,直接 .DeepClone() 即可得到该对象的深度克隆

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

二.API 使用

  1.命名空间,只需:

 using MyDAL.ModelTools;

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

     public class ModelEntity
{
public int ValueField { get; set; } public string ReferenceField { get; set; } public ModelEntity ObjectField { get; set; }
}

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

             // 对象准备
var obj = new ModelEntity
{
ValueField = ,
ReferenceField = "源值10",
ObjectField = new ModelEntity
{
ValueField = ,
ReferenceField = "源值11",
ObjectField = new ModelEntity
{
ValueField = ,
ReferenceField = "源值12"
}
}
}; // 深度克隆
var cloneObj = obj.DeepClone(); // 源对象 值展示
Console.WriteLine(obj.ValueField); //
Console.WriteLine(obj.ReferenceField); // 源值10
Console.WriteLine(obj.ObjectField.ValueField); //
Console.WriteLine(obj.ObjectField.ReferenceField); // 源值11
Console.WriteLine(obj.ObjectField.ObjectField.ValueField); //
Console.WriteLine(obj.ObjectField.ObjectField.ReferenceField); // 源值12 // 克隆对象 值展示
Console.WriteLine(cloneObj.ValueField); //
Console.WriteLine(cloneObj.ReferenceField); // 源值10
Console.WriteLine(cloneObj.ObjectField.ValueField); //
Console.WriteLine(cloneObj.ObjectField.ReferenceField); // 源值11
Console.WriteLine(cloneObj.ObjectField.ObjectField.ValueField); //
Console.WriteLine(cloneObj.ObjectField.ObjectField.ReferenceField); // 源值12 // 变更 克隆对象 的值
cloneObj.ReferenceField = "新值10";
cloneObj.ObjectField.ReferenceField = "新值11";
cloneObj.ObjectField.ObjectField.ReferenceField = "新值12"; // 源对象 值展示
Console.WriteLine(obj.ValueField); //
Console.WriteLine(obj.ReferenceField); // 源值10
Console.WriteLine(obj.ObjectField.ValueField); //
Console.WriteLine(obj.ObjectField.ReferenceField); // 源值11
Console.WriteLine(obj.ObjectField.ObjectField.ValueField); //
Console.WriteLine(obj.ObjectField.ObjectField.ReferenceField); // 源值12 // 克隆对象 值展示
Console.WriteLine(cloneObj.ValueField); //
Console.WriteLine(cloneObj.ReferenceField); // 新值10
Console.WriteLine(cloneObj.ObjectField.ValueField); //
Console.WriteLine(cloneObj.ObjectField.ReferenceField); // 新值11
Console.WriteLine(cloneObj.ObjectField.ObjectField.ValueField); //
Console.WriteLine(cloneObj.ObjectField.ObjectField.ReferenceField); // 新值12

                                         蒙

                                    2019-03-09 15:22 周六