我有一个继承自System.Data.DataTable的'MyDataTable'类
我已经在我的课程中实现了ISerializable,并且有一个'Public Overrides Sub GetObjectData ...'
但是当我尝试序列化'MyDataTable'的对象时,我收到一条错误消息,说'MyDataTable'没有标记为可序列化。
如果我改为使用DataTable,我的代码会正确序列化。 如果我将一个serializable属性添加到'MyDataTable'类 - 它正确序列化,但我被告知如果我实现ISerializable则不需要。
有人能指出我正确的方向吗?
答案 0 :(得分:8)
无论谁告诉你没有必要添加SerializableAttribute是不正确的:
应用SerializableAttribute属性,即使该类还实现了ISerializable接口来控制序列化过程。
从ISerializable条目( em 添加):
任何可能序列化的类必须使用SerializableAttribute 进行标记。如果类需要控制其序列化过程,则可以实现ISerializable接口。
答案 1 :(得分:1)
即使您实现了ISerializable,也需要添加SerializableAttribute。虽然这讨论了FxCop规则,但这来自http://msdn.microsoft.com/en-us/library/ms182350(VS.80).aspx:
得到普通人的认可 语言运行时可序列化, 类型必须标有 SerializableAttribute属性甚至 如果类型使用自定义 序列化例程通过 ISerializable的实现 接口