基于可扩展文本的c#序列化

时间:2012-12-13 10:22:56

标签: c# serialization xml-serialization nested

我正在为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);
        //...
    }
}

0 个答案:

没有答案