代码之家  ›  专栏  ›  技术社区  ›  Diab

将变量添加到序列化缓冲区,而不使用protobuf序列化。网

  •  1
  • Diab  · 技术社区  · 7 年前

    所以我有一个类,我想序列化,除了一个特定的值“key”,它

    现在我明白了,这可以手动完成,但我创建了一个处理序列化/反序列化的类,我希望使其尽可能通用。

    [ProtoContract]
    public class GeneralPacket 
    {
       public uint Identity;
       [ProtoMember(1, IsRequired = true)]
       public uint Arg1;
       [ProtoMember(2, IsRequired = true)]
       public uint Arg2;
       [ProtoMember(3, IsRequired = true)]
       public uint Arg3;
    }
    

    我希望标识包含在流中,但不序列化。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Marc Gravell    7 年前

    听起来你想要一个“鉴别器”。Protobuf net目前没有任何代码支持这一点,尤其是在反序列化方面(简单地编写额外的值相当容易:难的是在读取时使用它)。什么协议网 支持是:

    • 具有共同祖先和键控子类型的各种继承场景
    • 通过SerializeWithLengthPrefix手动使用,允许在序列化时指定数字键,并在反序列化时提供类型解析器(从键到类型)

    如果有更好的鉴别器支持用例,我很乐意考虑,但这在今天并不存在。我需要看到示例的预期用途,并考虑实现结果。