背景說明
Google Protobuf中不支持數據結構的派生關系,因此,如果在存在派生體系的對象中定義數據結構時,通過組合方式對數據結構進行組合,則需要對基類對象提供的通用接口進行重載或在外部進行動態轉型才能達到獲取或設置數據的目的。
因此考慮使用Google Protobuf提供的extension擴展機制解決數據結構之間的不能派生的問題,以此來達到減少重復工作量和便於維護代碼的目的。
使用說明
- 定義公共數據類型
描述:
此數據類型為對象派生體系同基類提供的公共數據類型
示例:
- 定義擴展數據類型
描述:
此數據類型為對象派生體系中派生類使用的數據類型
示例:
- 初始化數據類型
描述:
公共數據類型與普通數據類型使用相同,此處僅說明擴展數據類型使用方法
示例:
- 使用數據類型
描述:
通過HasExtension、GetExtension、MutableExtension來訪問數據;
示例:
-
數據復制及傳輸
描述:
C++代碼中數據復制及傳輸解析與普通數據類型相同,此處僅說明C#代碼中需要注意事項。
C#中通過ParseFrom進行字節數據轉換時,需要傳入對擴展數據結構的說明信息ExtensionRegistry,否則擴展數據字段將作為未知數據處理。
示例: