我正在为 C# 寻找基于文本(即人类可读而不是二进制)的可扩展序列化。
我要保存的项目数量很少(<100)。可以为序列化创建额外的类,这些类在反序列化后填充真正使用的类。
我认为标准的内置 XML 序列化既不易于阅读,也不可扩展。
我已经看过 protobuf-net,它看起来很有希望,但由于它是二进制文件,所以我放弃了它。
我也尝试过自定义序列化,但无法序列化其中的两个。
我还查看了 JSON.net,但它并没有比自定义序列化更好。
我现在的数据结构大致是这样的:
class ClassIWantToSerialize
{
DataContainer A;
DataContainer B;
DataContainer C;
DataContainer D;
DataContainer E;
DataContainer F;
double G;
double H;
// other stuff that I don't want to serialize...
}
class DataContainer
{
MinorDataContainer A;
MinorDataContainer B;
double C;
double D;
double E;
double F;
// other stuff that I don't want to serialize...
}
class MinorDataContainer
{
double A;
}
当我尝试添加第二个MinorDataStructure
(即B
)时出现了问题,它抱怨它不能两次添加相同的字段。
class DataContainer
{
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
A.GetObjectData(info, context);
B.GetObjectData(info, context); // error upon calling this line
info.AddValue("C", C);
//...
}
}