【问题标题】:Why Isn't My .Net Object Serializable?为什么我的 .Net 对象不能序列化?
【发布时间】:2011-02-27 01:30:56
【问题描述】:

我有一个继承自 System.Data.DataTable 的“MyDataTable”类

我已经在我的班级中实现了 ISerializable 并且有一个“Public Overrides Sub GetObjectData...”

但是当我尝试序列化“MyDataTable”的对象时,我收到一条错误消息,指出“MyDataTable”未标记为可序列化。

如果我改用 DataTable - 我的代码可以正确序列化。 如果我向 'MyDataTable' 类添加一个可序列化的属性 - 它会正确序列化,但我被告知如果我实现 ISerializable 则这是不必要的。

有人能指出正确的方向吗?

【问题讨论】:

    标签: .net vb.net serialization


    【解决方案1】:

    谁告诉你不需要添加SerializableAttribute是不正确的:

    应用 SerializableAttribute 属性,即使该类也实现了 ISerializable 接口来控制序列化过程。

    ISerializable 条目(em 添加):

    任何可能被序列化的类必须用 SerializableAttribute 标记。如果一个类需要控制其序列化过程,可以实现ISerializable接口。

    【讨论】:

    • 感谢您的快速回复。我的测试似乎支持这一点,我在 MSDN 中找到的示例似乎也同意这一点。
    【解决方案2】:

    您需要添加 SerializableAttribute,即使您实现了 ISerializable。虽然这讨论了 FxCop 规则,但来自http://msdn.microsoft.com/en-us/library/ms182350(VS.80).aspx

    为大众所认可 语言运行时可序列化, 类型必须标有 SerializableAttribute 属性甚至 如果类型使用自定义 序列化例程通过 ISerializable 的实现 界面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 2014-04-04
      相关资源
      最近更新 更多