2012-09-28 45 views
0

可能重複:
Serializing an array of integers using XmlSerializer無法序列類型的對象System.Int32 [,]

我寫在C#我的Windows 8應用程序,並在試圖序列我的自定義對象我遇到了「有錯誤反映類型」錯誤消息。在研究內部異常時,我發現我們無法序列化多維數組。

我做錯了什麼或對不對?

如果我是對的,是否有辦法將我的int類和int [,]數組打包發送給romaing存儲?謝謝。

我使用此.dll: http://winrtstoragehelper.codeplex.com/

這裏是我的代碼:

var objectStorageHelper = new ObjectStorageHelper<BaseballTeam>(StorageType.Roaming); 
await objectStorageHelper.SaveAsync(team); 

用的BaseballTeam是類型,以及團隊的特定對象。

+0

你能顯示代碼?我從來沒有遇到過這個問題,根據這個URL,多維int數組應該是可序列化的:http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/90c98754-2580-404a -81ae-aedba5f2604d/ –

+3

你正在使用什麼序列化方法?只要元素類型是可序列化的,數組(多維或不)將與標準序列化器串行化。 –

+0

@AdamRobinson DataContractSerializer不支持多維數組。 「允許組合集合類型(具有集合集合),鋸齒形數組被視爲集合集合,不支持多維數組。 [請參閱高級收集規則](http://msdn.microsoft.com/en-us/library/aa347850%28v=vs.100%29.aspx) – Vache

回答

1

它只在DataContractSerializer文檔中明確提到(「允許組合集合類型(具有集合集合)」,「鋸齒形」數組被視爲集合的集合,不支持多維數組。「請參閱Advanced Collection Rules)二維數組即使通過XmlSerializer也不能被序列化(即使沒有使用的庫,簡單的測試也會很清楚地顯示出來)。

您可以找到另一個序列化器或簡單地轉換爲鋸齒陣列以進行序列化(並在反序列化時返回多維)。

編輯:一個非常類似的問題已經被問過,答案可能是你不錯的解決方法:Serializing an array of integers using XmlSerializer

相關問題