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的操作,两者之间互不影响。

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
    Linux 系统时间设置
    Redis入门
    线程安全的单例模式
    redis-Sentinel配置
    openpose
    Qt5.11参考文档
    opencv3.3
    opencv3.4 win10 visual studio2017 opencv_contrib 编译
  • 原文地址:https://www.cnblogs.com/jeff151013/p/11739617.html
Copyright © 2011-2022 走看看