背景说明
Google Protobuf中不支持数据结构的派生关系,因此,如果在存在派生体系的对象中定义数据结构时,通过组合方式对数据结构进行组合,则需要对基类对象提供的通用接口进行重载或在外部进行动态转型才能达到获取或设置数据的目的。
因此考虑使用Google Protobuf提供的extension扩展机制解决数据结构之间的不能派生的问题,以此来达到减少重复工作量和便于维护代码的目的。
使用说明
- 定义公共数据类型
描述:
此数据类型为对象派生体系同基类提供的公共数据类型
示例:
- 定义扩展数据类型
描述:
此数据类型为对象派生体系中派生类使用的数据类型
示例:
- 初始化数据类型
描述:
公共数据类型与普通数据类型使用相同,此处仅说明扩展数据类型使用方法
示例:
- 使用数据类型
描述:
通过HasExtension、GetExtension、MutableExtension来访问数据;
示例:
-
数据复制及传输
描述:
C++代码中数据复制及传输解析与普通数据类型相同,此处仅说明C#代码中需要注意事项。
C#中通过ParseFrom进行字节数据转换时,需要传入对扩展数据结构的说明信息ExtensionRegistry,否则扩展数据字段将作为未知数据处理。
示例: