无法序列化System.Int32 [,]类型的对象

时间:2012-09-28 22:59:02

标签: c# windows

  

可能重复:
  Serializing an array of integers using XmlSerializer

我正在用C#编写我的Windows 8应用程序,在尝试序列化我的自定义对象时,我遇到了“有一个错误反映类型”错误消息。在查看内部异常时,我发现我们无法序列化多维数组。

我做错了什么或我是对的?

如果我是对的,有没有办法收集我的int类和int [,]数组以将它们发送到romaing存储?谢谢。

我正在使用这个.dll: http://winrtstoragehelper.codeplex.com/

这是我的代码:

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

将BaseballTeam作为类型,并组合特定对象。

2 个答案:

答案 0 :(得分:1)

不使用该库;它使用XmlSerializer,它不支持多维数组(参见http://winrtstoragehelper.codeplex.com/SourceControl/changeset/view/60a57faeb36a#WinRtUtility%2fWinRtUtility%2fObjectStorageHelper.cs处的源代码)。您仍然可以使用其他一些序列化程序(例如,IIRC JSON.NET支持多维数组),只需使用File API将序列化对象写入漫游存储。

或者选择另一个为你做这件事的图书馆。

答案 1 :(得分:1)

仅在DataContractSerializer文档中明确提及(“允许组合集合类型(具有集合集合)。锯齿状数组被视为集合的集合。不支持多维数组。”请参阅{{3但是,即使XmlSerializer也无法对多维数组进行序列化(即使没有使用的库,一个简单的测试也能很清楚地显示出来。)

您可以找到另一个序列化程序或简单地转换为锯齿状数组以进行序列化(并在反序列化时返回多维)。

编辑:之前已经提出了一个非常类似的问题,答案可能是一个很好的解决方法:Advanced Collection Rules