次の protobuf メッセージ プロトコルがあります。
message TestMsg
{
int32 int = 1;
google.protobuf.Int32Value nullable_int = 2;
repeated google.protobuf.Int32Value nullable_int_array = 3; // Runtime fail
}
protoc はそれをうまくコンパイルし、C# ではすべての Int32Values は int? です。ただし、null引数が許可されていないという例外で実行時に失敗します。repeated
null メッセージが許可されないことは理解できます。ただしInt32Value
、 WellKnownType であるため、コンパイラは必要に応じて特別な NullValue 型を生成できます。
これは protobuf の制限 (で許可Int32Value
されていないrepeated
) ですか、それとも C# コード生成とサポート ライブラリの制限/バグですか?
独自のメッセージと codegen を作成する以外に、protobuf プロトコルで null 許容の int 配列を実行するオプションは何ですか?