问题标签 [protobuf-csharp-port]
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.
c# - protobuf3 中的重复 Int32Value(可为空的 int 数组)
我有以下 protobuf 消息协议:
protoc 可以很好地编译它,并且在 C# 中所有 Int32Values 都是 int?。但它在运行时失败,带有一个不允许的空参数异常。我可以理解repeated
不允许空消息。但是Int32Value
是 WellKnownType,因此编译器可以在需要时生成特殊的 NullValue 类型。
这是 protobuf 中的限制(不允许Int32Value
in repeated
)还是 C# 代码生成和支持库中的限制/错误?
除了创建自己的消息和 codegen 之外,在 protobuf 协议中执行可为空的 int 数组的选项有哪些?
c# - 如何在 Protobuf 重复字段中进行搜索?
这是我第一次使用 protobuf,我想知道是否有任何方法可以访问重复字段中的某个项目。
我创建了一个方法,它将遍历所有项目,检查项目字段并返回它(我无法返回指向它的指针:()。
似乎没有使用某些 lambda 表达式的 find 方法。
有没有其他方法可以实现这一目标?如果我可以有指向该项目的指针,而不是它的副本,那将是完美的,所以如果我改变它,我可以直接写完整的重复字段。
c# - 从电线反序列化 Protobuf c#
我正在为 c# 使用 protobuf google 实现。
到目前为止的故事..我有一个 c++ 中的服务器和 c# 中的客户端,并通过 protobuf 消息与 TCP 进行交谈。
在客户端,我通过提供的回调检索从 tcpClient.BeginReceive 返回的缓冲区并附加它们(所以我猜它已从 netstream 垃圾中清除)。然后在工作线程上,我尝试反序列化消息。
在服务器端,序列化代码是:
在客户端上,我使用 CodedInputStream 读取每个块,读取第一个数字并发送前缀+它包含的 msg 以进行反序列化
计算长度:
反序列化:
我收到的错误消息是:
1)System.InvalidOperationExeption:线型无效
2) 协议消息包含无效标签(零)。
通信在开始时是正确的,它在某个点不同步,从那里中断(直到我读到另一个以前缀值开头的消息,也就是不是部分消息)我的问题是反序列化声音或者我错过了完全标记为有一些我根本不考虑的事情。
c# - C#二维数组验证表单中的条目
每个用户都需要填写一个表格,它有 4 个字段:日期、账单代码、金额和货币。账单代码有一个下拉菜单,其中包含许多有效的 4 个选项(健康、旅行、膳食、酒店)。账单代码字段不能留空,只能选择这4个选项之一。用户使用 4 个帐单代码中的每一个输入 4 个条目。如果用户仅输入 Health and Travel,则会触发一条错误消息,提示需要添加 Meal 和 Hotel 记录。这是我到目前为止得到的:
但它不能确保所有这四个都输入了,而且我不确定如何制作一条错误消息来告诉用户缺少四个中的哪一个。我将不胜感激这方面的任何帮助。
c# - 如何为 protobuf 映射设置值C#中的属性
我有以下 protoc3 消息:
当编译成 C# 时,我得到以下自动生成的代码:
我有另一条消息,其中有一个 LocalizedString 属性,我将其用作 rpc 函数的输入,但我不知道如何设置Translations
. 在生成的代码中,Translations
被标记为只读。
如何在 C# 中构造一个包含这样的映射的 protobuf 消息对象?
c# - 类内的 Automapper IEnumerable 未映射到 RepeatedField
我想在两个类之间映射:
和
其中 RepeatedField 是来自 Google.Protobuf.Collections 的一个类,用于处理 gRPC 数据。
编辑:事实证明,gRPC 通过其原型创建类的方式并不完全像创建像 B 这样的类。请参阅我的答案。
我像这样创建一个 Automapper MappingConfiguration
然后它通过 ASP.NET Startup 类注册。
如果我在另一个班级做这样的事情
它正确地返回一个包含值的列表。然而:
返回 B 的实例,但 instanceB 内部的列表为空。我该如何解决?
protocol-buffers - 将 protobufs 文件发送到 API 端点
所以我有一个 API 端点,它应该获取 protobufs bin 文件。它是用 C# 编写的并使用 protobufs-net。
当我尝试将文件发送到此端点时,出现以下错误:
RUnexpected end-group in source data; this usually means the source data is corrupt
我尝试了以下请求(从 bin 文件解码):
当我尝试上传 bin 文件本身时,出现以下错误:
请求是:
我尝试了内容类型application/x-protobuf
和application/octet-stream
我发送正确吗?我怎样才能发送文件。(我在这部分使用了 burp 套件)
c# - C# Protobuf 反序列化
为什么 protobuf 反序列化不适用于 OffsetDictionary 成员变量?如果我不使用 Dictionary 作为支持字段,它工作正常。此外,如果 OffsetDictionary 的类型从复杂类型更改为简单的 SortedDictionary,它也可以正常工作。我在这里错过了什么吗?
asp.net-core - 如何在 gRPC proto 文件中支持 C# 动态类型
我们的 asp.net 核心应用程序中有一个接受dynamic
对象的 POST 操作。
我们希望将此 POST 操作转换为 gRPC 服务器,并且希望继续dynamic
在 gRPC 服务中接收对象。dynamic
gRPC protobuf 文件定义中的 C# 定义等价物是什么?或者,如果这无法实现,那么接收动态对象的最佳方式是什么?
protocol-buffers - Protobuf C# 生成内部(相对于公共)构造函数
由于某种原因,生成的代码包含内部构造函数而不是公共构造函数:
从官方文档来看,它应该是公开的:
我想知道是否可以指定任何选项来生成公共构造函数。我需要它是公共的,因为我使用的是通用模板,它要求类型具有公共构造函数(new() 约束)。
我正在使用的 Protobuf 版本:3.11.4
.proto 文件是这样的: