2010-06-02 58 views
6

我有一个“MyDataTable”类,从System.Data.DataTable为什么我的.NET对象序列化?

继承

我已经在我的类中实现了ISerializable,并有“公共覆盖子GetObjectData使用......”

但我当尝试序列的对象“MyDataTable”我得到一个错误,说“MyDataTable”未标记为可序列。

如果我使用一个DataTable,而不是 - 我的代码序列化正确。 如果我增加一个序列化的属性添加到“MyDataTable”类 - 它系列化正确的,但有人告诉我,如果我实现了ISerializable这是不必要的。

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

回答

8

谁告诉你这是没有必要添加SerializableAttribute是不正确的:

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

而且从ISerializable条目(EM补充):

可能被序列任何类都必须标有Seri​​alizableAttribute。如果一个类需要控制序列化过程,它可以实现ISerializable接口。

+0

谢谢你的快速反应。我的测试似乎支持,我在MSDN中找到的例子似乎也同意。 – 2010-06-02 22:05:57

1

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

要由公共 语言运行时为可序列化的认可, 类型必须标明甚至 如果类型使用自定义 系列化 SerializableAttribute属性通过 实现了ISerializable 界面的程序。

相关问题