子類繼承拷貝父類,直接調用拷貝方法,子類需要序列化:
[Serializable]
public class Cloneable<T> : ICloneable
{
public object Clone()
{
return MemberwiseClone();
}
public T DeepClone()
{
using (Stream objs = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(objs, this);
objs.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(objs);
}
}
}
調用:
[Serializable]
public class a: Cloneable<a>
{
public int num;
}