我有一個很奇怪的例外,在我的C#應用程序:嘗試反序列化包含一個通用List<IListMember>
(其中由接口指定列表項),拋出一個異常報告一個類時「類型... IListMember沒有標記可序列化屬性」(措辭可能略有不同,我的VisualStudio不是英文版)。接口「未標有序列化屬性」異常
現在,接口不能串行化。實際包含在列表中的類,實現IListMember,是[Serializable]
;是的,我已經檢查過,IListMember
實際上被定義爲一個接口,並不意外地作爲一個類!
我試圖再現只含含列表和成員的類一個單獨的測試項目中的例外,但它系列化,並愉快地反序列化:/
沒有人有可能是什麼什麼好主意?
編輯:
我們使用的是BinarySerializer
;我再說一遍,當提取到一個測試項目時,這個班會愉快地序列化。所以,我並不需要一個解決辦法來序列包含List<IThing>
一類,一般能正常工作(只要實施IThing
實際類是可序列化);我所尋找的是原因,它可能不工作這個特定時刻......
現在我已經放在一個解決方法(與條目數分別各序列化列表成員一起,並重新創建List
通過手),但真的想找出它可能爲未來的參考。
你在使用什麼串行器? 'BinaryFormatter'? 'XmlSerializer'? 'DataContractSerializer'? 「鮑勃的本土有機串行器」? 另外 - 是否有任何'事件涉及? – 2010-04-22 22:17:47
看我的編輯;是的,在導致調用binaryFormatter.Deserialize的行的某處會有事件發生;你看到任何連接? – 2010-04-26 06:55:08
該接口用於確定類是否表示可以序列化,如果有一個基於接口的引用列表,其中接口未標記爲可序列化,也許序列化代碼試圖告訴您可能有序列化對象在這裏,它無法處理?即使你當前的對象圖是A-OK。 – 2010-04-26 07:40:20