2011-10-02 49 views
0

一個愚蠢的問題,但仍然是:什麼通過序列化?

在C#中,當我將一個對象從一臺機器傳遞到另一臺機器時 - 目標端有什麼可用的?

只有公衆會員?屬性?方法?還有什麼?

+0

當然沒有理由要序列化方法 – Magnus

+2

什麼樣的序列化?有不止一種。你如何將物體從一臺機器傳遞給另一臺機器?有不止一種方法。 –

回答

3

取決於序列化方法。該BinaryFormatter採取一切(即ISerializable),XmlSerialzer只有公共屬性和字段與setter(默認情況下)。

+0

公共屬性 - 你的意思是他們現在的狀態還是屬性本身?意思是如果屬性做了額外的邏輯,它將在調用時在目標上被調用? –

+0

XmlDeserialzer將調用對象的setter並執行指定的任何邏輯。 – Magnus

+2

@Elad序列化只帶* data *;默認情況下,'BinaryFormatter'採用*字段*。採取*邏輯*是「遠程」 –

2

要認識到的重要一點是被反序列化的對象的類型定義必須在目的地可用。

序列化只產生數據。全部或部分。反序列化過程根據接收端的類型定義構造一個對象,根據反序列化數據填充它。

在接收端嘗試反序列化未定義的類型或具有不同定義的類型是值得的。