gpt4 book ai didi

c# - protobuf.net 中的子类化

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:30 25 4
gpt4 key购买 nike

我有一个围绕 protobuf.net 构建的系统,该系统公开了一个我希望最终用户实现的抽象类 (foo)。抽象类可由 protobuf.net 序列化。目前,当我尝试序列化 foo 的实现时,出现错误:

Unexpected type found during serialization; types must be included with ProtoIncludeAttribute; found bar passed as foo

这是有道理的,我还没有告诉系统有关 bar 的信息,所以当我将 bar 作为 foo 传递时,它会感到困惑。是否有一种巧妙的设置方式,使程序员使用我的库来做事变得简单(最好只是将字段标记为可序列化,就像正常的 protobuf.net 用法一样?

编辑:显然,我不能使用 protoinclude,因为这需要修改基础库的源代码。

最佳答案

在 v1 中,必须装饰基地才能了解 children 。在 v2 中,此限制被删除;您可以在运行时创建模型并定义您想要的一切。它仍然可以读取属性,这都是并排的(如果你愿意,你可以对不同的类型使用不同的方法)。

但是,如果调用者不想知道任何血淋淋的细节,您可以选择将 RuntimeTypeModel 细节隐藏在您自己的 API 后面。

v2 可用于从主干构建,并且非常稳定 - 虽然有一些 TODO 项目 - 主要是边缘情况需要完成以实现完全兼容性。大多数人不会看到这些情况。

关于c# - protobuf.net 中的子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com