protobuf-net继承和字段编号我正在尝试为我们的应用程序构建一个必须能够处理继承的序列化系统。更复杂的是,应用程序是可扩展的,因此类型很可能在编译时是未知的。我已经阅读了以前的stackoverflow问题,该问题得到了回答并帮助我实现了我的目标,但我遇到了绊脚石,可能比任何真正的问题都更缺乏理解!所以这是我当前的代码...publicinterfaceIBaseFrame{}publicclassBasicDataFrame:IBaseFrame{}publicclassAnotherFrame:BasicDataFrame{}。...RuntimeTypeModel模型=TypeModel.Create();MetaTypebaseType=model.Add(typeof(IBaseFrame),true);MetaTypebasicFrameType=model.Add(typeof(BasicDataFrame),true);baseType.AddSubType(7,typeof(BasicDataFrame));model.Add(typeof(AnotherFrame),true);basicFrameType.AddSubType(8,typeof(AnotherFrame));现在这段代码有效(据我所知!),世界上一切都很好......我关心的是使用上面代码中的值7和8来获取AddSubType方法的fieldNumber参数.由于插件是枚举,我使用SerialisationManager来注册它们的帧类型,然后我将它们添加到模型中,并为fieldNumber增加一个计数器(我以任意大的数字开始它,所以我不必担心扩展将来的基类)。我担心如果插件以不同的顺序枚举或添加(或删除)新插件,自动生成的fieldNumber将因不同的子类型而不同,这将导致用户之间共享日志文件时出现问题(他们的插件可能已经当删除,同一系统上可能有不同的插件,因此可能有子类型甚至文件。是否有任何狡猾的方法来自动处理这种继承并且将来不会引入兼容性问题,或者当插件发生变化时,或者我是否需要想出一个机制,通过它可以保证这些fieldNumbers在所有安装中保持不变?如果能提供任何帮助或建议,我们将不胜感激!这里没有魔法;这些数字基本上是合同的一部分,如果你想反序列化以前存储的数据,重要的是它们可以可靠地复制。如果数据在编译时未知,配置或一些外部类型到字段编号注册表可能会有所帮助。你的怀疑是准确的。以上就是C#学习教程:protobuf-net继承与字段编号分享的全部内容。立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
