gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:34 24 4
gpt4 key购买 nike

我在 C# 中使用 MsgPack 自定义序列化程序时遇到困难。说,我有以下类(class):

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# 实现的信息。任何形式的帮助或建议将不胜感激。

最佳答案

这是我目前的发现:

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

所以这个还是不清楚。

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

关于c# - 在 C# 应用程序中使用 MsgPack 自定义序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com