zoukankan      html  css  js  c++  java
  • .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的操作,两者之间互不影响。

  • 相关阅读:
    让程序在后台长久运行的方法
    unrecognized selector sent to instance的定位
    CocoaLumberjack调试的简单使用
    #pragma
    __bridge __bridge_retained __bridge_transfer
    关于c#继承
    C#__ 模拟鼠标单击事件
    C# 调用win api获取chrome浏览器中地址
    认识安卓
    源码解析-Volley(转自codeKK)
  • 原文地址:https://www.cnblogs.com/jeff151013/p/11739617.html
Copyright © 2011-2022 走看看