有没有办法深度复制不可序列化的对象?
Is there a way to deep copy non serializable object?
我必须将 Arraylist 复制到新的 Arraylist。在旧的 Arraylist 中,有多个元素在 runtime.One 处发生变化,其中是 Arraylist 中的模块设置参数。我想深度复制 arraylist 的值,以便我可以将它用于撤消操作。我尝试使用 Binaryformater 和 Datacontract。对于不可序列化的对象,两者都不能完成。有人可以帮忙吗?
在没有更多信息的情况下,很难准确说出问题所在,但 ArrayList 本身是可序列化的。但是,如果您使用的是自定义对象,则需要将其标记为可序列化才能使序列化工作。参见:Serialize ArrayList of Objects
使用内存流和二进制格式化程序
像
`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);
}
. }’
希望对你有帮助
我必须将 Arraylist 复制到新的 Arraylist。在旧的 Arraylist 中,有多个元素在 runtime.One 处发生变化,其中是 Arraylist 中的模块设置参数。我想深度复制 arraylist 的值,以便我可以将它用于撤消操作。我尝试使用 Binaryformater 和 Datacontract。对于不可序列化的对象,两者都不能完成。有人可以帮忙吗?
在没有更多信息的情况下,很难准确说出问题所在,但 ArrayList 本身是可序列化的。但是,如果您使用的是自定义对象,则需要将其标记为可序列化才能使序列化工作。参见:Serialize ArrayList of Objects
使用内存流和二进制格式化程序 像
`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);
}
. }’
希望对你有帮助