问题标签 [protobuf-net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
559 浏览

protobuf-net - ProtoInclude 添加不需要的依赖项

我刚刚在分布式缓存应用程序中用协议缓冲区替换了 .NET 序列化,结果确实令人印象深刻。我唯一不喜欢的是我需要在基本消息类及其子类之间添加依赖关系,这会创建循环依赖关系。有没有用 ProtoInclude 标记基类的替代方法?

0 投票
1 回答
872 浏览

c# - 顽固的对象不会用 protobuf-net 序列化

我正在将 protobuf-net 集成到我们基于 WCF 服务的解决方案中,但遇到了一个我无法弄清楚的问题。以下类将很好地序列化,除了 ObjectId 属性。

这是在玩弄我的课程:

我已经尝试了很多事情,但没有运气。任何想法将不胜感激!

0 投票
1 回答
1340 浏览

wcf - 通过 IList与 IEnumerable 对比使用 protobuf-net

我在 protobuf-net 更改日志中注意到 IList<> 受支持,但我收到“无法创建接口的实例”异常。如果我改为 IEnumerable<> 那么生活是美好的。这听起来正确吗?

谢谢,迈克

另外,是否有具有此和其他答案的文档站点?我讨厌问新手问题。:)

0 投票
2 回答
3445 浏览

c# - 带有扩展的协议缓冲区

我可能忽略了一些东西,但我试图将协议缓冲区转换为一种简单的方法,以便以后提供扩展。这似乎有点不清楚,所以我将直接进入这个问题。

我正在编写一个程序集来支持各种任务,其中之一包括描述结构化数据。使用协议缓冲区的最佳时机。使用协议缓冲区的主要类称为 StateDefinition。这是我为它设计的 .proto 文件:

我的目标是允许这些 _StateDef 消息稍后使用它需要的字段进行扩展。但是,此扩展将独立于我当前正在编写的库发生。

Kagents.dll -> 处理 StateDefinition 解析等。

引用 Kagents.dll 的东西 -> 有一个带有“扩展 GraphicsStateDef”的 protobuff 文件来定义所需的状态。

我希望定义“扩展 GraphicsStateDef”会生成允许我使用属性访问这些字段的代码,并避免繁琐的“Extendible.AppendValue()”和 GetValue() 语法。

我设计的一个解决方案,看起来很老套,是在引用 DLL 中定义一个带有扩展方法的类,如下所示:

如果有人能想到更好的方法,我将不胜感激。=) 另外,我不确定我对问题的描述有多清晰,所以如果我可以提供任何澄清或进一步的信息,请告诉我。=)

编辑:所以,经过深思熟虑并意识到我正在处理错误的问题。StateReference 应该存储不同 GameState 的列表。同样,它存储了一个 StateDefinition,它应该描述这个状态引用的状态。目前,我正在尝试将状态缓冲区反序列化为不同的类(GraphicsStateDef),而我真的应该反序列化为状态对象本身。

因此,我需要重新考虑设计,使 StateDefinition 成为流的容器,并且只为“repeated StateTypes requiredStates=1”字段提取足够的信息。然后,在引用程序集中,可以将流的其余部分反序列化为相应的状态。

有没有人对如何解决这个问题有建议?一些想法正在形成,但没有具体的想法,我喜欢其他人的意见。

0 投票
4 回答
2384 浏览

c# - 基类中的 C# 泛型类型

我正在编写一个具有一组协议缓冲区(使用 protobuf-net)的系统,我想在它们都继承的抽象类中定义这样的东西:

但是,protocol buffer serealiser 需要一个类型参数,有没有一些有效的方法来获取继承类的类型?

例子:

0 投票
2 回答
2692 浏览

c# - 具有通用类层次结构的 Protobuf 属性

我有一个看起来像这样的类层次结构。这些类包含许多我已排除的其他细节。这是对这些类的序列化方面的简化。

我还有大约 150 个自动生成的泛型查询后代,具有多种泛型类型。例如:

我还为所有这些类型自动生成了 [ProtoInclude]。例如:

问题是,我如何部署这 150 个 ProtoInclude?我尝试了各种看起来合乎逻辑的组合,但我得到了各种异常,具体取决于哪些属性出现在哪里。上例中实际需要序列化的类型是 W、X、Y、Z,只有大约 150 个。

protobuf-net 甚至可以处理这样的事情,还是我应该尝试其他类型的序列化?

0 投票
2 回答
26125 浏览

c# - 如何从装饰有属性的 C# 类生成 .proto 文件?

试图让我的想法围绕 google protobuf。我在 C# 中找到了一些 protobuf 的实现,但它们似乎缺少一个功能:从现有的 C# 类中自动生成 .proto 文件的能力,该类装饰有属性。

我想这样做而不是从 .proto 文件中自动生成的 C# 类的原因是因为我已经在我的项目中定义了 C# 类,我不想复制它们只是为了满足 ProtoBuf。

有没有人遇到过这样的场景?


更新

这是否可以只装饰一个 C# 类而不使用 .proto 文件来使用 protobuf?

0 投票
2 回答
5353 浏览

c# - 是否可以将 Protobuf-Net 与没有无参数构造函数的类一起使用?

使用 Protobuf-Net,我发现在没有无参数构造函数的情况下似乎无法反序列化一个类,或者我可能遗漏了什么?

我不想要一些带有无参数构造函数的类。是否有某种我可以使用的属性或其他一些技术?

0 投票
1 回答
2220 浏览

c# - 如何在 Protobuf/Protobuf-net 中使用某些对象继承的列表/数组?

使用 Protobuf/Protobuf-net 和两个类,一个是基类,另一个是从基类派生的。
您将如何序列化/反序列化列表?

例如:

以及要序列化的以下字段:

请记住,该列表包含 SomeBase 和 SomeDerived 对象。

0 投票
1 回答
1032 浏览

.net - protobuf.net 不序列化零

看起来 0 作为 Int64 存在编码问题。其他值如 Int64 ok。

被反序列化为 Int64.MinValue

任何想法?

我确认错误。如果 _val == 0,此类将无法正确序列化

[原合同]

此测试失败

[测试]