有没有办法深度复制非序列化对象?

时间:2017-05-31 08:06:44

标签: c# deep-copy

我必须将一个Arraylist复制到一个新的Arraylist。在旧的Arraylist中有多个元素在运行时会发生变化。其中一个元素是Arraylist中的模块设置参数。我想深度复制arraylist的值,以便我可以使用它进行撤消操作。我尝试使用Binaryformater和Datacontract。对于非可序列化对象,都无法做到。任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果没有更多信息,很难确切地说出错误,但ArrayList本身是可序列化的。但是,如果您使用自定义对象,则需要将其标记为可序列化以使序列化工作。请参阅:Serialize ArrayList of Objects

答案 1 :(得分:0)

使用内存流和二进制格式化程序 像

这样的东西
`public T Clone<T> (T obj)
.   {
.       using(var ms = new MemoryStream())
.       {
.          var formatter = new BinaryFormatter();
        formatter.Serialize(stream, obj);
        stream.Position =0;
        return (T)formatter.Deserialize(stream);
     }
.    }’

希望有所帮助