Protobuf: повторный должен выдавать установленные средства доступа

#.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; просто я не знаю, как. В моем случае это упростит код. И просто из любопытства 🙂