2012-09-28 48 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

相关问题