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

猜你喜欢

转载自www.cnblogs.com/jeff151013/p/11739617.html