如何解决如何在C#中为ProtoBuf重复字段添加值
我是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;
}
我希望将值传递给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;
但是上面的代码会产生错误“属性或索引器'ForceStopRequest.Id'无法分配给它-它是只读的”。如何解决此问题?
解决方法
重复字段的任何属性都是只读的。 您可以在集合中添加或删除项目,但不能将其替换为完全独立的集合。
所以,你可以尝试一下:
var request = new ForceStopVcaRequest();
request.Id.Add(id);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。