2013-11-15 41 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;

所以這仍然不清楚。

事實上,我沒有必要深入挖掘,所以我認爲這個問題已經解決。也許我的回答可能對別人有幫助。

相關問題