使用C#中的多维数值序列化对象

时间:2013-10-07 18:04:49

标签: c# .net serialization multidimensional-array

我的程序会生成一些数字结果,这些结果在一个类中保存在一起:

[Serializable]
public class Examination
{

    public string _examiner { get; set; }
    public string _interpretation { get; set; }
    DateTime _examination_date { get; set; }

    // two following properties about 100x100 in size
    public Point3D[,] _surface_coordinates { get; set; }
    public double [,] _mapa_curvatura { get; set; }

    public Point3DCollection _symmetry_line { get; set; }
}

现在我想继续使用序列化(原则上不需要ORM /数据库),我有一些疑问:

  1. 我需要序列化数据可供其他语言的脚本访问(主要是Python)所以我不会使用二进制序列化,而是使用XmlSerialization;
  2. 不支持多维数据,因此我不得不将[,]数组转换为[][]数组,这看起来对我来说有点“脏”(不过很大,但如果这是唯一的问题) );
  3. 生成的XML有点太大(每个文件2Mb),而我在python中使用quick'n'dirty二进制格式得到的结果要小得多(例如,将双精度数组保存为长字符串,放置行和文件名本身中的列,然后解析它并在反序列化期间重新整形:不太好!)。
  4. 由于我是序列化领域的一个完整的初学者,我想问:“将这个类序列化和反序列化为磁盘是一种可行的策略/策略?”主要要求是:

    • 可以用其他语言阅读;
    • 压缩文件大小;
    • 尊重C#/ .NET良好做法和常用习语;

    感谢阅读!

1 个答案:

答案 0 :(得分:2)

  

可以用其他语言阅读

这是XML设计的原因之一,我个人会坚持下去。

  

压缩文件大小

您是否考虑将其存储为压缩文件?例如MyXml.zip。

  

尊重C#/ .NET良好做法和常用习语

坚持docs,你应该没事。