2013-11-15 90 views
1

在C#中使用MsgPack自定义序列化程序遇到困难。我说,我有下面的类:在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文档相当差,并且没有关于Internet上有关MessagePack C#实现的很多信息。 任何形式的帮助或建议将不胜感激。

回答

1

这是我迄今发现:

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

所以这仍然不清楚。

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

相关问题