我正在检查Flatbuffers,以实现通信协议(protocol)。在我看来,当收到一条消息时,它可能包含许多不同的表。如果我理解正确,则在Flatbuffers中实现此目的的方法是使用“根”表,该表在一个联合中具有每个可能的不同表。
就我而言,我已经知道传入类型(类型是 header 的一部分)=>我不一定需要能够将每种类型放在单个表中。但是,似乎无法将多个表标记为“根”类型。这意味着,如果我定义了表Foo
和Bar
,则只能获得GetFoo()
或GetBar()
方法进行反序列化,而不能同时获得这两种方法。
我假设也可以将定义拆分到不同的模式文件中,但是由于它们将共享某些子类,因此我也需要一个共享的模式文件来定义常见的定义。对于简单的情况,这似乎比必需的要复杂一些。
是否有另一种方法可以使用Flatbuffers反序列化多个不同的类型?
最佳答案
是的,您可以这样做。请注意,生成的GetMyType()
仅是可用于任何类型的模板化GetRootAs<MyType>
的缩写。