如何将对象标记为Serializable

时间:2015-09-29 10:55:58

标签: c# wpf serializable documents cloning

我有一个system.document.table对象,我想将该对象标记为Serializable以进行深度克隆。例外情况是在'PresentationFramework,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'中键入'System.Windows.Documents.Table'未标记为可序列化。

 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);

中遇到错误

2 个答案:

答案 0 :(得分:5)

[Serializable]属性添加到要序列化的类中。

查看有关C#serialization here

的详细信息

答案 1 :(得分:2)

对于可序列化的对象,您必须将[Serializable]包含在您的类定义

[Serializable]
public class YourClass
{
  //Your definition here;
}