protobuf-net :不支持 IExtensible 继承

2023-12-09

似乎无法实施protobuf-net通过定义其子类型的类的序列化[ProtoInclude]并实施ProtoBuf.IExtensible :

[ProtoBuf.ProtoInclude(1000, typeof(DerivedClass))]
public partial class BaseClass : ProtoBuf.IExtensible 
{ 
    ... 

    private IExtension extensionObject;
    IExtension IExtensible.GetExtensionObject(bool createIfMissing)
    {
        return Extensible.GetExtensionObject(ref extensionObject, createIfMissing);        
    }
}    

public partial class DerivedClass : BaseClass, ProtoBuf.IExtensible
{
    ... 

    private IExtension extensionObject;
    IExtension IExtensible.GetExtensionObject(bool createIfMissing)
    {
        return Extensible.GetExtensionObject(ref extensionObject, createIfMissing);        
    }
}   


var baseObject = new MyClass { ... };    
DerivedClass derivedObject;
using (var stream = new MemoryStream())
{
    Serializer.Serialize(stream, baseObject);  // throws runtime exception
    stream.Seek(0, SeekOrigin.Begin);
    derivedObject = Serializer.Deserialize<DerivedClass>(stream);
}

尝试序列化会引发运行时异常:

{“结构或类中不支持 IExtensible 遗产”} 在 ProtoBuf.Serializers.TypeSerializer..ctor(TypeModel 模型,类型 forType、Int32[] fieldNumbers、IProtoSerializer[] 序列化器、 MethodInfo[] baseCtorCallbacks,布尔值 isRootType,布尔值 useConstructor、CallbackSet 回调、Type 构造类型、MethodInfo 工厂)
在 ProtoBuf.Meta.MetaType.BuildSerializer()
在 ProtoBuf.Meta.MetaType.get_Serializer() 在 ProtoBuf.Meta.RuntimeTypeModel.Serialize(Int32 键,对象值, ProtoWriter 目标) 在 ProtoBuf.Meta.TypeModel.SerializeCore(ProtoWriter writer,对象 价值) 在 ProtoBuf.Meta.TypeModel.Serialize(Stream dest, 对象 值、SerializationContext 上下文) 在 ProtoBuf.Serializer.Serialize[T](流目的地,T 实例) 在 ...

具体实施的目的是什么IExtensible?如果不这样做会有什么后果?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

protobuf-net :不支持 IExtensible 继承 的相关文章

随机推荐

  • 如何在没有装饰器语法的情况下编写 Angular2?

    我大致如下JavaScript 打字稿快速入门Angular2编写我的应用程序ES6但无法让装饰器工作 entry js import as stylesheet from assets styles app scss import jQu
  • 您可以使用 Subversion 进行部分结账吗?

    如果我在 trunk 下有 20 个目录 每个目录中有很多文件 并且只需要其中的 3 个目录 是否可以仅使用 trunk 下的这 3 个目录进行 Subversion 签出 事实上 由于对我的帖子的评论 它看起来像稀疏目录是要走的路 我相信
  • jetty webSocket:java.lang.IllegalStateException:已提交

    我在我的 Web 应用程序中使用 Jetty Websockets 当我尝试重定向到注销 jsp 时 出现此错误 oejs ServletHandler test java lang IllegalStateException Commit
  • 在 directshow 中以编程方式更改录制文件

    我使用 directshow 制作了一个控制台应用程序 它从实时源 现在是网络摄像头 然后是电视捕获卡 进行记录 在叠加中添加当前日期和时间 然后将音频和视频保存为 asf 现在我希望输出文件每 60 分钟更改一次而不停止图表 我不能错过直
  • 多核处理器的多线程

    我有三星 Galaxy S3 它使用自己的 Exynos 4 四核处理器 所以我想优化我的应用程序 使其可以使用所有 4 个处理器核心 所以我做了一些测试 在一个线程中运行任务 处理时间 8 秒 在四个线程中运行任务 处理时间 仍为 8 秒
  • 如何在Lua中获取表的“sizeof”?

    我正在使用 Lua 涉足 Love2D 并且刚刚实现了一个 StateMachine 来处理一组状态之间的转换 例如IntroState MenuState PlayState 等 在以前的程序中 我通常释放只是 一次性交易 的对象和 或状
  • 如何添加注释以从 jacoco 代码覆盖率报告中排除方法?

    我有一些 Java 代码 我想将其从代码覆盖率中排除 我该怎么做 我希望能够添加注释 有没有办法配置或扩展 jacoco 如 gradle 中使用的 来使用它 Example public class Something ExcludeFr
  • python 有排序列表吗?

    我的意思是一个结构 O log n 复杂度x push 运营 查找元素的复杂度为 O log n 计算复杂度为 O n list x 将被排序 我还有一个关于性能的相关问题list insert 现在是here 您的大 O 要求有什么特殊原
  • Python Unittest:打开并等待程序关闭

    目前 我尝试创建一个打开文件 使用相应的应用程序 的单元测试 然后测试运行应该等到程序关闭 def test HFG self print please edit this file os chdir r C test a os start
  • Excel VBA 比较列数据复制行

    好吧 在这里许多编码专家的帮助下 我设法以某种方式编写了这段代码 我需要创建一个宏来比较两个工作表中的数据 在我的两个工作表中 都有一个名为 eRequest ID 的列 我必须复制以下记录行 DO NOT有一个 eRequest ID 两
  • Magento 免费送货和优惠券折扣

    我有一个免费送货价格规则 其配置如下 所有客户群体 无优惠券 每个客户的使用次数 0 条件 购物车总数 gt 100 发货国家 地区 NL 或 BE 或 DE 免费送货 与配套商品一起发货 然而 当我输入具有固定折扣金额的优惠券时 免费送货
  • RestTemplate + ConnectionPoolTimeoutException:等待来自池的连接超时

    当应用程序没有任何负载时 我在生产中突然遇到此错误 当我的代码尝试使用 Spring Rest 模板发送 PUT 消息时出现问题 这是我如何初始化restTemplate的代码 private static final RestTempla
  • 实体框架中的缓存如何工作?

    我看到大量关于人们努力让 EF 不发送缓存数据的帖子 我坐在这里想知道他们如何让它发送缓存数据 详细信息如下 使用 Entity Framework Core 6 0 6 的 NET 6 0 上的 ASP NET Core 最新版本 通过
  • 为什么我的图像加载在 Firefox 和 Internet Explorer 中没有触发?

    我正在尝试使用该解决方案检测几张图像何时完成加载在这里找到 该解决方案在 Chrome 和 Safari 中运行良好 但在 Firefox 和 IE 中失败 没有错误 预加载函数如下 var preloadPictures function
  • Tensorflow 警告 - 无法加载动态库“cupti64_101.dll”; dlerror:找不到 cupti64_101.dll

    我见过与 cupti dll 错误相关的其他类似问题 然而 答案似乎是dll位置需要在路径中 嗯 我的 dll 在路径中 标题中列出的警告后面是几个与未加载 cupti dll 相关的错误 venv PS D Projects tensor
  • Grails 多数据源域问题

    我有一个项目 表分布在两个数据源之间 我正在配置代码以按照 grails 文档中的 3 3 6 主题访问表http grails org doc 2 0 0 M2 guide conf html dataSourcesAndEnvironm
  • 使用 cordova 1.5 的 xcode 没有准备好设备且没有 console.log

    这是我拥有的所有代码 我既没有得到 xcode 中的日志 也没有得到 deviceReady 事件 我在任何其他平台上也没有得到该事件 在 Ubuntu Android Eclipse 上 我确实得到了控制台日志 但没有 deviceRea
  • 检测时间线上的冲突,第 2 部分:隔离“真实”重叠

    这是我关于绘制重叠时间冲突的时间轴调度算法的原始问题的延续 PART 1 检测调度程序时间线上的冲突 算法 我得到了正确的算法 如下所示 在 24 小时时间轴上分割 冲突 事件 使冲突组中的每个项目占据窗口的 N 我当前的问题 第 2 部分
  • 相当于

    与 css 的 valign=center

    我的页面上有以下代码 p align left style font size 10pt display block height 200px Content p 我希望文本在中心垂直对齐p tag Using vertical align
  • protobuf-net :不支持 IExtensible 继承

    似乎无法实施protobuf net通过定义其子类型的类的序列化 ProtoInclude 并实施ProtoBuf IExtensible ProtoBuf ProtoInclude 1000 typeof DerivedClass pub