使用protoc,是否可以生成带有标记为可空引用类型的子消息的C#代码?

问题描述 投票:0回答:1

使用 protoc 为 C# 生成代码时,proto 文件中定义的消息中使用的子消息不会标记为可为空(

?
,与
csproj
选项
<Nullable>enable</Nullable>
一起使用)。

我已经看到,即使它们没有标记为可为空,这些属性仍然可以接收意外的

null
对象。

我想知道是否可以要求

protoc
将公开子消息的属性类型声明为可为空。

我尝试在协议中找到一个选项来执行此操作,但失败了。

我期望的是用 C# 生成的代码清楚地表明子消息可以为空:

message Main {
  Sub sub = 1;
}

message Sub {
  int id = 1;
}
class Main {
  Sub? Sub { get; set; }
}

class Sub {
  int Id { get; set; }
}
c# protocol-buffers nullable protoc
1个回答
0
投票

我想知道是否可以要求 protoc 将暴露子消息的属性类型声明为可为空。

目前还没有,没有。

在这方面已经做出了一些努力,但尚未取得任何成果。由于资源有限且在多个方面进行了大量工作,我无法对我们何时可能能够实现它做出任何估计(以及 Google.Protobuf 库的可为空注释)。 您可能需要查看

protoc

gRPC 插件 的提案 - 如果您订阅这些 PR,那么即使它们没有直接合并,我希望您会看到任何进展的迹象确实发生了。

© www.soinside.com 2019 - 2024. All rights reserved.