当前位置:  开发笔记 > 编程语言 > 正文

使用XmlSerializer序列化整数数组

如何解决《使用XmlSerializer序列化整数数组》经验,为你挑选了1个好方法。

我正在尝试通过XmlSerializer为我正在研究的XNA项目序列化一个多维的整数数组时遇到问题.我可以毫不费力地序列化我的所有其他数据(布尔值,字符串,甚至颜色等).我也看到很多人声称XmlSerializer本身也会处理(单维)整数数组.是否有关于多维数组的限制,或者是否还有其他问题?

这是相关的代码:

int[,,] scoredata = scores;  // Populated with data elsewhere 

filename = Path.Combine(container.Path, "scoredata.sav"); 
stream = File.Open(filename, FileMode.Create); 
serializer = new XmlSerializer(typeof(int[,,])); 
serializer.Serialize(stream, scoredata);  // This line throws the exception. 
stream.Close(); 

我收到的异常是"System.Xml.dll中发生类型'System.InvalidOperationException'的未处理异常.生成XML文档时出错."

我也尝试将这个数组用作结构中的成员变量(我存储了所有其他玩家数据),但是当我这样做的时候我得到同样的异常,这让我相信它不是简单的语法错误或类似的东西.

我是否需要重新构建我的代码以通过单维数组进行序列化,或者我有什么东西可以忽略?

提前致谢!



1> Marc Gravell..:

阅读内部例外:

反映类型'SomeType'时出错.无法序列化'System.Int32 [,,]'类型的成员'SomeType.Data',请参阅内部异常以获取更多详细信息.

无法序列化System.Int32 [,,]类型的对象.不支持多维数组.

所以没有:不支持多维数组.您可能需要将其作为单维数组进行填充...您可以通过使用单独的属性来执行此操作:

[XmlIgnore]
public int[, ,] Data { get; set; }

[XmlElement("Data"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public int[] DataDto
{
    get { /* flatten from Data */ }
    set { /* expand into Data */ }
} 

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有