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