2009-07-02 35 views
2

我試圖將一個C#應用程序移植到.NET(客戶端服務器),並且遇到序列化問題。單聲道,帶MarshalByRefObject的可序列化對象

Linux的客戶端序列化和對象,但Windows服務器無法反序列化,給人的錯誤:

System.Runtime.Serialization.SerializationException
場「的MarshalByRefObject + __身份」不

類中找到

反序列化是通過BinaryFormatter的完成:

BinaryFormatter formatter = new BinaryFormatter(); 
formatter.Deserialize(data); 

類的問題有Seri​​alizable屬性,並自MarshalByRefObject繼承。如果我刪除MarshalByRefObject的繼承,它工作正常。在Windows中一切正常,所以我認爲這是一個單聲道的具體問題。

任何幫助/建議將不勝感激^ _^

回答

4

二進制序列化依賴於私有實現的細節。在你的情況下,私人領域__身份。由於Mono開發人員無法訪問私有實現細節,因此這些細節偶爾不匹配,因此二進制序列化並不總是兼容.Net和Mono。

請提交一份測試用例單: http://www.mono-project.com/Bugs

要解決這個問題,你可以爲你的類做你自己的自定義序列化。

+0

:-)很棒!!!大聲笑... – IAbstract 2010-01-24 04:34:22