0

可能重复:
使用 XmlSerializer 序列化整数数组

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

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

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

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

这是我的代码:

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

以 BaseballTeam 为类型,并以特定对象为团队。

4

2 回答 2

1

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

或者选择另一个为您执行此操作的库。

于 2012-09-28T23:22:05.600 回答
1

仅在文档中明确提及DataContractSerializer(“允许组合集合类型(具有集合的集合)。锯齿状数组被视为集合的集合。不支持多维数组。”参见Advanced Collection Rules),但多维数组可以' 甚至不会被 XmlSerializer 序列化(即使没有您使用的库,一个简单的测试也会非常清楚地向您展示)。

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

编辑:之前已经问过一个非常相似的问题,答案对您来说可能是一个很好的解决方法:使用 XmlSerializer 序列化整数数组

于 2012-09-28T23:23:17.207 回答