代码之家  ›  专栏  ›  技术社区  ›  Rob P.

为什么我的.NET对象不可序列化?

  •  6
  • Rob P.  · 技术社区  · 16 年前

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

    我已经在我的类中实现了ISerializable,并有一个“public overrides sub getObjectData…”

    但是,当我尝试序列化“mydatatable”的an对象时,我得到一个错误,说明“mydatatable”未标记为可序列化。

    如果我改为使用数据表,我的代码将正确序列化。 如果我向“MyDataTable”类添加一个可序列化属性,它将正确序列化,但我被告知,如果实现ISerializable,这是不必要的。

    有人能给我指个方向吗?

    2 回复  |  直到 16 年前
        1
  •  8
  •   Rex M    16 年前

    不管是谁告诉你,没有必要再加上 SerializableAttribute 不正确:

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

    从 ISerializable 进入( 相对长度单位 增加):

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

        2
  •  1
  •   Paul Kearney - pk    16 年前

    即使实现了ISerializable,也需要添加SerialibleAttribute。尽管这讨论了fxcop规则,但它来自 http://msdn.microsoft.com/en-us/library/ms182350(VS.80).aspx :

    被公众认可 语言运行时可序列化, 类型必须用标记 序列化属性偶数 如果类型使用自定义 序列化例程通过 实现ISerializable 接口。