Google Protobuf中不支持數據結構的派生關係,所以,若是在存在派生體系的對象中定義數據結構時,經過組合方式對數據結構進行組合,則須要對基類對象提供的通用接口進行重載或在外部進行動態轉型才能達到獲取或設置數據的目的。數據結構
所以考慮使用Google Protobuf提供的extension擴展機制解決數據結構之間的不能派生的問題,以此來達到減小重複工做量和便於維護代碼的目的。ide
描述:ui
此數據類型爲對象派生體系同基類提供的公共數據類型spa
示例:code
描述:對象
此數據類型爲對象派生體系中派生類使用的數據類型blog
示例:接口
描述:string
公共數據類型與普通數據類型使用相同,此處僅說明擴展數據類型使用方法io
示例:
描述:
經過HasExtension、GetExtension、MutableExtension來訪問數據;
示例:
數據複製及傳輸
描述:
C++代碼中數據複製及傳輸解析與普通數據類型相同,此處僅說明C#代碼中須要注意事項。
C#中經過ParseFrom進行字節數據轉換時,須要傳入對擴展數據結構的說明信息ExtensionRegistry,不然擴展數據字段將做爲未知數據處理。
示例: