#.net #protocol-buffers #grpc #protobuf-net #protobuf-csharp-port
Вопрос:
.Net
Компилятор protobuff создает класс, в котором повторяющиеся поля доступны только для чтения.
Как сделать их { get; set; }?
Допустим, у меня есть этот прото-код:
syntax = "proto3";
option csharp_namespace = "gRPC";
service MyService{
rpc Foo(Request) returns (Response);
}
message Response{
repeated string value = 1;
}
message Request{
string id = 1;
}
Компилятор Protobuff генерирует это:
public pbc::RepeatedField<string> Value {
get { return value_; }
}
Как заставить его генерировать что-то подобное:
public pbc::RepeatedField<string> Value {
get { return value_; }
set {
value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
}
}
Комментарии:
1. Коллекции уже изменчивы; идея в том, что вы
.Add
изменяете свое содержимое; зачем вам нужно изменять сам экземпляр коллекции?2. @MarcGravell Спасибо за ответ. Вы правы, я использую
.Add()
, но я обнаружил, что можно конвертировать повторяющиеся поля,set;
просто я не знаю, как. В моем случае это упростит код. И просто из любопытства 🙂