2011-06-13 102 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