• .NET C# 深度复制工具类,不需要使用对象支持可序列化


    1.工具类

        /// <summary>
        /// 深复制扩展类,不需要T支持可序列化
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class DeepCopyExtensions<T>
        {
            public static T DeepCopy(T item)
            {
                MemoryStream stream = new MemoryStream();
                XmlSerializer xml = new XmlSerializer(typeof(T));
                xml.Serialize(stream,item);
                stream.Seek(0, SeekOrigin.Begin);
                return (T) xml.Deserialize(stream);
            }

            public static List<T> DeepCopy(object list)
            {
                MemoryStream stream = new MemoryStream();
                XmlSerializer xml = new XmlSerializer(typeof(List<T>));
                xml.Serialize(stream,list);
                stream.Seek(0, SeekOrigin.Begin);
                return (List<T>) xml.Deserialize(stream);
            }
        }

    2.调用方式

    List<T> items1 = new List<T>();

    xxx //对items1进行赋值

    List<T> items2 = DeepCopyExtensions2<T>.DeepCopy(items1); // 对items1进行深度复制,赋值给items2

    //后续对items1、items2的操作,两者之间互不影响。

  • 相关阅读:
    shell脚本编程-重定向
    web安全-剖析_基础构架剖析
    shell脚本编程-函数
    shell脚本编程-循环
    web安全-入侵基础
    shell脚本编程-检查和测试
    shell脚本编程-特殊字符
    shell脚本编程-计算方式
    python例子-抓取网站IP列表
    linux问题-APR not Found
  • 原文地址:https://www.cnblogs.com/jeff151013/p/11739617.html
Copyright © 2020-2023  润新知