继承和已知类型问题
Posted
技术标签:
【中文标题】继承和已知类型问题【英文标题】:Inheritance and known type issue 【发布时间】:2011-11-03 15:15:54 【问题描述】:我正在尝试使用 protobuf .net 序列化从基类继承的类的实例。尝试序列化\反序列化时,我收到关于“类型不是预期”的异常。正如我已经阅读的那样,将具有派生类型的 protoinclude 添加到基础将解决问题。但是,我的问题是我无法添加属性,因为我不知道将派生我的基础的类型。正如我已经读过的,我知道 V2 将提供一种定义类型模型以描述继承的方法。所以我的问题是:
-
什么时候可以发布 V2 版本?
目前是否有解决此问题的解决方法?
提前致谢,
吉尔
【问题讨论】:
【参考方案1】:V2 可从 nuget 和 google-code 获得(nuget 比 IIRC 领先几圈 - 两者都落后了一点)。有一些 v1 功能尚未重新实现,但在大多数情况下,您不会注意到这一点。他们将在适当的时候重新添加。
是你的问题;可通过 MetaType.AddSubType 获得 - 但是,要使用该方法,您必须能够在将来为每个子类型重现相同的 int 标识符 - 它们是重要的键,不得更改。
RuntimeTypeModel.Default[typeof(SomeType)].AddSubType(7, subType);
“对象”属性也有 DynamicType 可用 - 但是这与基于继承的模型有一些问题;我现在会避免这种情况(这也将很快得到纠正)。
【讨论】:
嗨,马克,感谢您的回答,但我不确定我是否完全理解您的回答。 1.您在答案中提供的示例是否可在 v1 最新版本中获得(“protobuf-net-VS10.msi”?2.“nuget 比 IIRC 领先几圈”是什么意思 - 两者都落后于头”?对不起这个问题,但什么是 nuget 和 iirc?我不明白是否有 V2 的最终版本可供下载?在谷歌代码中,我只看到了 beta 下载(“protobuf-net v2 beta r450 .zip")。我试过了,但是有些方法会抛出未实现的异常。谢谢 Gil @Gil "nuget" 是 VS2010 中的库下载工具 - 它允许您在 IDE 中轻松访问/更新数千个库(例如 protobuf-net)。还没有“最终的”v2,尽管有一个完整的功能建议队列等。“beta”标记的持续存在仅仅是由于突出的很少使用 v1 功能,例如@ 987654322@(用于从模型中提取 .proto 方案)- 这些将被重新添加,但还没有被重写尚未。因此,如果您需要,v1 目前可能是更好的选择。提供所有日常功能。以上是关于继承和已知类型问题的主要内容,如果未能解决你的问题,请参考以下文章