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