【问题标题】:protobuf.net inheritance - using ImplicitFields = ImplicitFields.AllFieldsprotobuf.net 继承 - 使用 ImplicitFields = ImplicitFields.AllFields
【发布时间】:2013-01-21 04:02:15
【问题描述】:

我有一个用 [ProtoContract(ImplicitFields = ImplicitFields.AllFields)] 装饰的基类

为了能够序列化派生类,我只需要添加 ProtoInclude 吗?由于派生类字段没有被序列化 - 继承是否仅适用于 Protomember?

【问题讨论】:

  • 您应该查看您之前提出的问题并接受答案或改进您的问题,以便人们完成他们的交易部分,您提出问题,评分和/或接受答案.

标签: c# protobuf-net


【解决方案1】:

Protobuf 不完全支持继承,您需要在基类中进行一些修饰。

[
ProtoContract(),
ProtoInclude(100, typeof(Peer)),
ProtoInclude(101, typeof(Instruction))
]
class Base {...}

[ProtoContract()]
class Peer: Base
{ ... }

[ProtoContract()]
class Instruction: Base
{ ... }

对于仅通过基类提供属性的派生类。

【讨论】:

  • 只是补充一点:ImplicitFields 假定是继承的:这需要在每个级别应用。
猜你喜欢
  • 2012-08-05
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2018-05-23
  • 2019-04-26
  • 1970-01-01
相关资源
最近更新 更多