2011-06-13 62 views
1

我有序列化和反序列化的Protobufs的类层次结构。现在在运行时,我希望这些类中的一个包含我的类的实例,该实例由我在C++中实现,并包含我在运行时找到的某种装饰和缓存。
有没有一种方法只用普通的protobuf编译器来实现呢?向Protobuf注入外部依赖项?

我的两个选择是使用一个带整数id的索引用于每个类的实例。我想避免这种情况,因为性能受到影响。
另一种选择是用外部脚本对生成的源文件进行压缩。这很难看,如果可能的话,我也想避免它。

+1

你能解释一下你想做什么吗?您是否在整个应用程序中使用protobuf生成的类?通常情况下,人们会将它们转换为适当的域对象(或至少包装它们);应该对数据传输对象的使用进行本地化。 – 2011-06-14 08:58:49

回答

0

在运行时生成一个.proto来描述你装饰的消息,调用protoc来获取描述符,然后使用DynamicMessage?

有点混乱,但它可能只是工作。请参阅protobuf文档中的Self-Describing Messages

+0

装饰不能被表示为protobuf消息。这是一个简单的C++类。 – shoosh 2011-06-14 06:41:04