我是 Grpc 新手,我希望列出请求的值列表,为此我需要一个中继器。代码如下所示。
syntax = "proto3";
option csharp_namespace = "Test.Grpc.Server.Protos";
package test;
service VcaAdministrator {
rpc ForceStop (ForceStopRequest) returns (ForceStopResponse);
}
message ForceStopRequest{
repeated string Id = 1;
}
message ForceStopResponse{
bool stopped = 1;
}
Run Code Online (Sandbox Code Playgroud)
我希望将值传递给 ForceStopRequest。
var cmd = new Command("ForceStop");
cmd.AddOption(new Option<string>("--id", getDefaultValue: () => "null", description:"Force stop"));
cmd.Handler = CommandHandler.Create(async (List<string> id) =>
{
var request = new ForceStopVcaRequest()
{
Id = id
};
var response = await vcaAdministratorClient.ForceStopVcaAsync(request);
Console.WriteLine($"{response.Stopped} {response.ErrorCode} {response.ErrorMessage}");
});
return cmd;
Run Code Online (Sandbox Code Playgroud)
但上面的代码会生成错误“无法分配属性或索引器‘ForceStopRequest.Id’——它是只读的。” 如何解决这个问题?
小智 8
重复字段的任何属性都是只读的。您可以向集合添加项目或从集合中删除项目,但不能将其替换为完全独立的集合。
所以,你可以尝试一下:
var request = new ForceStopVcaRequest();
request.Id.Add(id);
Run Code Online (Sandbox Code Playgroud)
不确定这是否只是 VS 版本的问题,但是
GetCompaniesReply result = new() {
Companies = theList
}
Run Code Online (Sandbox Code Playgroud)
不起作用但是
GetCompaniesReply result = new() {
Companies = {theList}
}
Run Code Online (Sandbox Code Playgroud)
做
将对象包装在这些额外的 {} 中对我来说很有效。
| 归档时间: |
|
| 查看次数: |
17121 次 |
| 最近记录: |