2012-04-02 75 views
1

我有一個可序列化的Message類,它具有一個Data As Object屬性,我使用該屬性作爲通過使用推送技術和/或IPC與任何其他感興趣的程序進行通信的系統發送的信息的通用持有者在信息中。這可以使通信片段不知道它傳送的信息。作爲對象序列化的類會丟失它們的類型信息嗎?

我正在序列化這Data As Object作爲Byte[],因爲我擔心如何通過網絡序列化和傳輸Object行爲在另一邊。但是,反序列化時,我得到有關無法找到存儲在我的Data As Object屬性中的類型的程序集的錯誤,因爲我在包含Message類的程序集中反序列化...而不是包含Data As Object最初是類型的程序集。包含正在傳輸的信息的描述的程序集存在於雙方中(儘管我還沒有弄清楚我將如何優雅地處理版本控制)。

直接發送Object是更好的解決方案嗎?我想知道是否會丟失類型信息,無法將其轉換回另一端所需的類型。也許不可能通過另一個程序集傳遞類型作爲Object而不知道我的類型?

有一個很好的機會我完全錯誤地接近問題。替代品很樂意接受。謝謝!

回答

2

問:串行化對象是否會丟失它們的類型?

答:沒有

問:如果我投的對象爲「對象」之前,我把它序列化,有我失去了 類型?

A:是:)

0

序列化包括所述對象的運行時類型被序列化,所以類型信息不會丟失(這實際上使得內置二進制序列相當的序列化在一個已知的數據時效率較低已知格式)。

如果你的意思,你是預序列化的消息數據爲二進制格式,之前序列化您的Message對象序列化這些數據作爲對象爲一個byte [] ... ,那幾乎肯定是不必要的。

沒有關於您的場景的更多細節,很難給出更具體的建議。

相關問題