protobuf消息中的自引用字段

flo*_*lin 8 .net java protocol-buffers

这样的消息可以吗?

message A {
  required int64 some_number = 1;
  // .... some more fields
  optional A sub_a = 123;
}
Run Code Online (Sandbox Code Playgroud)

原因是我当前的协议存储直接设置为A,而将A包装在另一个消息中将导致存储数据的大量转换.

2.2.0 protoc编译好了.这可以解决序列化/反序列化问题,并且它是由protobuf-net支持的.

Mar*_*ell 8

这是一个非常精细的定义,应该适用于任何实现(包括protobuf-net); 你看到有什么问题吗?然而!你可能要考虑系列化的计算影响-尤其是,序列化子消息,需要子消息的大小,被称为第一.深度递归方法(由此链表所必需)可能会导致一些问题.

有什么理由不能仅仅是一条repeated消息吗?这将是迄今为止是我的偏好.