2009-04-14 115 views
3

我正在序列化一個ArrayList到一個二進制文件,以便通過TCP/IP發送它。序列化的文件是由服務器創建的,我希望能夠用我正在寫的客戶端進行反序列化。無法找到程序集

但是,當客戶端試圖反序列化時,會拋出一個SerializationException,因爲它無法找到程序集(可能是)將該文件序列化爲開頭。

我該如何解決這個問題?

+0

任何帶有完整源代碼的最終解決方案? – Kiquenet 2013-02-15 11:06:14

回答

5

您的arraylist是否包含自定義數據類型(即您自己的類)?

數組列表不會反序列化,除非運行反序列化的代碼可以訪問數組列表中包含的所有類。

1

如果您使用二進制序列化,客戶端將需要訪問包含您在ArrayList中序列化的類型的DLL。我想我並不真正瞭解你的設置來描述如何完成,但這是它的要點。

如果您使用xml序列化之類的東西(使用XmlSerializaer或DataContractSerializer),您將能夠生成Xml。如果您真的無法共享程序集,則可以在服務器/客戶端複製目標代碼。

0

您試圖發送的數據是什麼?你如何序列化它?如果您使用的是BinaryFormatter,則聲明任何自定義類型的程序集必須位於兩端。

請注意,BinaryFormatter存在一系列跨系統(包括同一系統的不同版本之間)的序列化問題。您可能需要查看其他序列化程序,例如DataContractSerializerprotobuf-net(用於高效的跨平臺二進制傳輸)。

相關問題