[Serializable]
public class Data : ICloneable
{


public int Level { get; set; }
public string ID { get; set; }
public string EID { get; set; }
public string Name { get; set; }
public List<Data> Childs { get; set; }

public object Clone()
{
using (MemoryStream ms = new MemoryStream(1000))
{
object CloneObject;
BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
bf.Serialize(ms, this);
ms.Seek(0, SeekOrigin.Begin);
// 反序列化至另一个对象(即创建了一个原对象的深表副本)
CloneObject = bf.Deserialize(ms);
// 关闭流
ms.Close();
return CloneObject;
}




}
}