在C#应用程序中使用MsgPack自定义序列化程序

时间:2013-11-15 14:47:26

标签: c# .net msgpack messagepack

我在使用C#中的MsgPack自定义序列化程序时遇到了困难。说,我有以下课程:

public class A
{
    public int intA;
    public string strA;
    public B nestedB;
}
public class B
{
    public string strB;
    public int intB; 
} 

我正在为A类编写自定义反序列化器。所以我的方法看起来像:

protected override A UnpackFromCore(Unpacker unpacker)
{
     int inta;
     unpacker.ReadInt32(out inta);
     string stra;
     unpacker.ReadString(out stra);
     B b = new B;
     // ??? How to get B from unpacker
     unpacker.?????(b);
}

原始类型的一切都很顺利,但如何从解包器中提取类B的实例? Wiki文档非常差,而且关于MessagePack C#实现的互联网上没有太多信息。 任何形式的帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是我到目前为止所发现的:

  • 在序列化实例之前,MsgPack序列化实例字段的数量;
  • 之后,默认情况下,所有字段都按字母顺序序列化,如果它们未标记DataMember或MessagePackMember属性(否则它们分别按order或id属性属性排序);
  • 不幸的是,我没有找到任何可以帮助确定这个包含字段数的数据的东西,因为像IsCollectionHeader,IsArrayHeader,IsMapHeader这样的所有属性都设置为false;

所以目前还不清楚。

实际上我没有必要深入挖掘这个,所以我认为这个问题已经解决了。也许我的回答对其他人有帮助。