我正在为C#寻找基于文本(即人类可读而非二进制)的可扩展序列化。
我想要保存的项目数量相当少(<100)。可以在反序列化之后创建用于序列化的其他类来填充真正使用的类。
标准的内置XML序列化既不易读,也不易扩展。
我已经看过protobuf-net而且看起来很有希望但是因为它是二进制的我放弃了它。
我也尝试了custom serialization但无法将两种类型序列化。
我也看了一下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);
//...
}
}