您好,我尝试了下确实实现不了深拷贝,对于您的需求,目前可以通过数组来记录操作记录,然后完成redo和undo的操作,因为VectorLayer没有序列化,所以使用二进制流也没办法
- public static T DeepCopy<T>(T obj)
- {
- object retval;
- using (MemoryStream ms = new MemoryStream())
- {
- BinaryFormatter bf = new BinaryFormatter();
- //序列化成流
- bf.Serialize(ms, obj);
- ms.Seek(0, SeekOrigin.Begin);
- //反序列化成对象
- retval = bf.Deserialize(ms);
- ms.Close();
- }
- return (T)retval;
- }
复制代码
还有一种办法就是您可以新建一个类,通过遍历的方式将操作的类赋给暂存类。不过这样的性能会有点慢。
希望能帮到您。 |