2010-06-02 23 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 界面的程序。

相關問題