Protobuf-net 对 Dictionary/KeyValuePair 的支持是如何工作的?

2023-12-13

我试图了解 protobuf-net 的 Dictionary/KeyValuePair 支持。我们希望使用底层二进制流和从 java 生成的 proto 文件,但生成的 .proto 文件包含看起来像名为 Pair_String_Int32 的自定义类型。

有人可以解释一下吗?

我有一个这样映射的类:

[DataContract]
public class ForwardCurve
{
    [DataMember(Order=1, IsRequired = true)]
    public string Commodity { get; set; }

    [DataMember(Order = 2, IsRequired = false)]
    public IDictionary<string, int> DictValue { get; set; }

    [DataMember(Order = 3, IsRequired = false)]
    public IList<string> ListValue { get; set; }

}

使用 Serializer.GetProto 生成的 .proto 文件将是:

message ForwardCurve {
   required string Commodity = 1;
   repeated Pair_String_Int32 DictValue = 2;
   repeated string ListValue = 3;
}

那么什么是 Pair_String_Int32 (以及进入 protobuf 字节流的内容)以及是否有任何方法可以映射它,以便 protobuf 通过使用 protoc 可以在 Java 中创建等效的映射代码?


要使其正常工作,请向生成的 .proto 文件添加一条新消息,如下所示。

message Pair_String_Int32 {
 required string Key = 1;
 required int32 Value = 2;    
}

然后protoc就能为Java创建相应的代码。

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

Protobuf-net 对 Dictionary/KeyValuePair 的支持是如何工作的? 的相关文章

随机推荐

  • Socket.IO 基本示例不起作用

    我对 Socket IO 是 100 的新手 刚刚安装了它 我试图遵循一些示例 并且可以让服务器端运行 但我似乎无法连接客户端 以下是我的 server js var http require http io require socket
  • 无法使用基于 JMS 的代码和 amqp 1.0 访问 ActiveMQ

    我正在尝试使用 AMQP 1 0 连接到 ActiveMQ 代理 但我想在我的应用程序代码中使用 JMS 我对使用 JMS 感兴趣主要是因为我希望开发人员能够使用他们已经熟悉的 API 我在本地主机上运行 ActiveMQ 5 14 0 和
  • 如何在Java中进行反向DNS查找

    我有一个 IP 列表 我需要做反向DNS 即我想要网站名称 我尝试了以下方法 InetAddress addr InetAddress getByName 98 138 253 109 String host addr getCanonic
  • 将具有未命名条目的列表列表转换为数据框或小标题

    我正在使用reticulateRStudio 中的 R 包运行一些 python 代码以从 ROOT 获取数据 http root cern ch 到 R 中 我的问题是 python 代码返回一个按行列表的列表 例如 在Python中 0
  • 通过 LINQ 将函数应用于集合的所有元素[重复]

    这个问题在这里已经有答案了 我最近开始使用 LINQ 它非常棒 我想知道 LINQ 是否允许我将函数 任何函数 应用于集合的所有元素 而不使用 foreach 类似于 python lambda 函数 例如 如果我有一个 int 列表 我可
  • python 打字模块:Mixin

    下面有没有课typing其行为类似于 mixin 例如 from typing import Union class A pass class B pass class C pass class D A B C pass current a
  • Rest Web 服务问题中使用 JSON 的 jQuery Ajax POST 调用

    我想将一个 JSON 对象从我的页面发布到 Rest WS 但是当我通过 jQuery ajax 调用发布 json 作为输出时 我得到一个带有 的 HTML 页面 HTTP 状态 405 不允许的方法 JSON 的状态 这是我从 Rest
  • 用逗号分割字符串并打印结果

    我使用以下代码来分割字符串并检索它们 Private Sub Button1 Click sender As Object e As EventArgs Handles Button1 Click Dim s As String a bc
  • 如何在R中高效使用Rprof?

    我想知道是否可以从以下位置获取个人资料R 代码的方式类似于matlab的探查器 也就是说 要知道哪些行号是特别慢的 到目前为止我所取得的成绩并不令人满意 我用了Rprof为我制作一个配置文件 使用summaryRprof我得到类似以下内容
  • 用于从网络摄像头进行手势识别的 C# 或 JAVA 库?

    我有一个手势识别项目 我想知道如何使用C 或Java来编程呢 有专门的图书馆吗 我需要编程还是需要特殊设备而不是网络摄像头 你看过吗OpenCV OpenCV 开源计算机视觉 是一个编程函数库 用于实时计算机视觉 OpenCV 的应用示例
  • 在Python中对类实例进行排序

    python 2 7 使用什么来对普通类实例进行排序 我对默认排序行为感兴趣 假设我有课 class S pass 然后我可以创建几个实例 并对它们进行排序 a S b S c S l a a b b c c sorted l 这将打印对象
  • Android 浏览器无法正确处理 touchmove 事件

    当我尝试检查touchmove事件在这个 jsbin 演示它只在 Chrome 和 Opera for Android 中触发一次 之后立即触发touchcancel事件 而不是继续触发touchmove events 基于两者W3C 规范
  • MySQL:何时真正需要 MySQL 中的刷新权限?

    创建新表和用户时 我通常只调用以下命令 CREATE DATABASE mydb GRANT ALL PRIVILEGES ON mydb TO myuser localhost IDENTIFIED BY mypassword 我从来没有
  • 尝试在 React 中导入组件时出现问题

    我在尝试使用 React 导入组件时遇到问题 app js 1 Uncaught ReferenceError 未定义 require 于 5 12 在我 babel min js 24 在 r babel min js 24 在 e sr
  • 在 Windows 7 上安装 Python 并分发会出现“写入失败...权限被拒绝”

    我使用的是 Windows 7 我完全承认我不了解其权限模型 我正在其他选项卡中阅读相关内容 我的用户是管理员 当我尝试运行 python allocate setup py 时 出现 写入失败 权限被拒绝 错误 然后出现 错误 无法在安装
  • 调用并行化 foreach 时出现问题

    我在使用 System Threading Tasks Parallel ForEach 时遇到问题 每个要更新的进度条的主体 但Invoke方法有时会冻结 我将代码附加到进度条和按钮的表单中 private void button1 Cl
  • 如何显示MySQL中未完成的事务

    我做了一些没有提交的查询 然后应用程序被停止 如何显示这些未结交易并提交或取消它们 如何显示这些未结交易并提交或取消它们 没有打开的事务 MySQL 将在断开连接时回滚事务 您无法提交事务 IFAIK 您使用显示线程 SHOW FULL P
  • C# 中根据空格分割字符串

    我有一个字符串 dexter 是好是坏 我想通过根据空格分割该字符串来创建一个列表 我使用以下代码实现了这一点 string ss dexter is good annd bad var s string IsNullOrEmpty ss
  • 从 Nunit 获取失败测试列表

    我有一个包含超过 8000 个测试的测试套件 并且很难看出哪些测试在代码更改之间中断 这些测试用例是从某些日志文件中自动提取的查询 有没有一种简单的方法来获取 NUnit 运行的失败测试列表 理想情况下 我想比较运行之间哪些测试受到影响 您
  • Protobuf-net 对 Dictionary/KeyValuePair 的支持是如何工作的?

    我试图了解 protobuf net 的 Dictionary KeyValuePair 支持 我们希望使用底层二进制流和从 java 生成的 proto 文件 但生成的 proto 文件包含看起来像名为 Pair String Int32