如何将对象标记为Serializable

问题描述 投票:2回答:2

我有一个system.document.table对象,我想将该对象标记为Serializable以进行深度克隆。程序集'PresentationFramework,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'中的Type'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)中遇到错误;

c# wpf serializable documents cloning
2个回答
6
投票

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

查看有关C#serialization here的详细信息


2
投票

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

[Serializable]
public class YourClass
{
  //Your definition here;
}
© www.soinside.com 2019 - 2024. All rights reserved.