当前位置 : 主页 > 大数据 > 区块链 >

如何在.proto文件中处理带协议缓冲区的泛型类型对象?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我花了一些时间寻找处理通用对象的替代方法,我看到类似于我的问题,但不是我想的那么具体? 协议缓冲区有多种标量类型我可以使用,但它们大多是原始的. 我希望我的消息灵活,并且能
我花了一些时间寻找处理通用对象的替代方法,我看到类似于我的问题,但不是我想的那么具体?
协议缓冲区有多种标量类型我可以使用,但它们大多是原始的.
我希望我的消息灵活,并且能够拥有某种列表的字段.

假设我的.proto文件看起来像这样:

message SomeMessage
   {
      string datetime = 1;
      message inputData // This would be a list
      {
         repeated Object object = 1;
      }
      message Object 
      {
          ? // this need to be of a generic type - This is my question
          // My work around - Using extentions with some Object
          //List all primitive scalar types as optional and create an extension 100 to    max;
      }
      message someObject //some random entity - for example, employee/company etc.
      {  
          optional string name = 1; optional int32 id = 2;
      }
      extend Object 
      {
          optional someObject obj = 101;
      }
  }

这样就可以了,并且可以工作,并且我有一个List,其中Objects可以是任何原始类型,也可以是List< someObject>.
但是 – 这里的问题是,每当我需要处理一种新类型的对象时,我需要编辑我的.proto文件,重新编译C#和java(我需要它的语言)…

如果协议缓冲区无法处理通用对象类型,那么还有另一种选择吗?
非常感谢任何有关此事的帮助.

正如Marc Gravell所述 – Protocol Buffers不处理泛型或继承.
网友评论