在 C# 中使用多维数值序列化对象
本文关键字:序列化 对象 | 更新日期: 2023-09-27 18:34:12
我的程序生成一些数字结果,这些结果保存在一个类中:
[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/数据库(,我有一些疑问:
- 我需要序列化数据可供其他语言(主要是 Python(的脚本访问,所以我不会使用二进制序列化,而是使用 XmlSerialization;
- 不支持多维数据,所以我不得不
[,]
数组转换为[][]
数组,这对我来说看起来有点"脏"(不过,如果这是唯一的问题,没什么大不了的(; - 生成的 XML 有点太大了(每个文件 2Mb(,而我在 python 中使用 quick'n'dirty 二进制格式得到的结果要小得多(例如,将双精度数组保存到长字符串中,将行和列放在文件名本身中,然后在反序列化期间解析它并重塑:也不漂亮!
由于我是序列化领域的完全初学者,我想问:"将此类序列化和反序列化到磁盘的建议策略/策略是什么?主要要求是:
- 可读其他语言;
- 紧凑的文件大小;
- 尊重 C#/.NET 良好做法和常用习惯用语;
感谢您的阅读!
可读其他语言
这是设计XML的原因之一,我个人会坚持下去。
紧凑的文件大小
您是否考虑过将其存储为压缩文件?例如MyXml.zip。
尊重 C#/.NET 的良好做法和常用习惯
只要坚持使用文档,你应该没事。