【发布时间】:2015-12-26 19:46:09
【问题描述】:
我有一个 system.document.table 对象,我想将该对象标记为可序列化以进行深度克隆。例外情况是 Type 'System.Windows.Documents.Table' in Assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 未标记为可序列化。
FlowTable original = new FlowTable();
original = objFlowTab.deepclone();
objflowtab 在哪里有一个表对象
[Serializable]
public class FlowTable : Table
{ ....
....
public static class ExtensionMethods
{
// Deep clone
public static T DeepClone<T>(this T a)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream,a);
stream.Position = 0;
return (T)formatter.Deserialize(stream);
}
}
}
我在 formatter.Serialize(stream,a); 中遇到错误
【问题讨论】:
-
请在错误信息之外显示一些代码。
-
这个应该先自己搜索一下就知道了。看起来你从来没有搜索过任何东西?
-
确保您的对象没有任何无法序列化的成员(例如某些类型也没有
Serializable标记)。在某些情况下,您需要显式实现接口ISerializable。 -
坏主意。将表序列化为 XAML。我怀疑,二进制序列化在这里会起作用。
标签: c# wpf serializable documents cloning