//建议使用第一种
public static T DeepClone<T>(T obj)
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
T model = (T)bf.Deserialize(ms);
ms.Dispose();
return model;
}
//这种克隆 出了一次问题, 使用的时候克隆很深的对象的时候出了问题
public static T Clone<T>(T obj)
{
T ret = default(T);
if (obj != null)
{
XmlSerializer cloner = new XmlSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream())
{
cloner.Serialize(stream, obj);
stream.Seek(0, SeekOrigin.Begin);
ret = (T)cloner.Deserialize(stream);
}
}
return ret;
}