我想使用protobuf来通过套接字连接使用该协议。
我的问题是关于继承的。
说我的项目中有以下课程:
让我们说:
到目前为止很好。
为了处理继承,假设我在Cat上使用以下属性:
[ProtoInclude(11, typeof(Pet))]
然后在Dog上使用:
[ProtoInclude(13, typeof(Pet))]
关于动物用途:
[ProtoInclude(6, typeof(Creature))]
问题:
因此,要处理Creature的继承(该代码不在我的项目中),我相信我必须使用运行时类型声明(如此处所述:protobuf-net inheritance)
我不确定这个示例需要什么语句,这些语句也需要放在项目中的什么位置?
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
[ProtoInclude]
适用于从基类到子类的工作-您需要注释 base 类型-因此:需要{{1}来声明{{1 }} Pet
和[ProtoInclude(...)]
的标记。同样,Cat
需要声明它期望Dog
。如果您不控制Creature
,显然这是一个问题,但是如果有问题,可以在运行时通过Animal
对此 进行配置。就个人而言,我不建议使用在序列化层次结构中不受控制的类型。
但是对您的问题:
Creature
的编码比RuntimeTypeModel
便宜)12
但是我承认许多人喜欢将2分开-也许
34134923