Proto3 C# Referenceは、次のテキストが含まれています:Nullableタイプをプロトコルバッファ経由で送信できますか?
ラッパー・タイプのフィールドproto3ではよく知られているタイプのほとんどは、コード生成、 が、ラッパー型(StringWrapper、Int32Wrapperなど)には影響しません
プロパティの種類と動作を に変更します。
C#の値型に (
Int32Wrapper
、DoubleWrapper
、BoolWrapper
など)に対応するラッパー型のすべてはT
が対応する非NULL可能タイプであるNullable<T>
にマッピングされます。 例えばタイプ、フィールドタイプNullable<double>
のC#のプロパティでDoubleValue
結果。C#の特性のタイプ
StringWrapper
又はBytesWrapper
結果のフィールドタイプstring
と生成されるByteString
の が、null
のデフォルト 値、及びnull
プロパティの値として設定されることを可能にします。すべてのラッパータイプのは、null値を繰り返し フィールドで許可されるのではなく、マップエントリの値として許可されています。
私は.proto
ファイルにInt32Wrapper
としてフィールドを宣言しようとした場合、.proto
ファイルから.cs
ファイルを生成しようとしている、protoc.exeはInt32Wrapper
存在しないというエラーがスローされます。
syntax ="proto3";
package prototest;
import "MessageIdentifier.proto";
message TestMessage {
string messageTest = 1;
fixed64 messageTimestampTicks = 2;
uint32 sequenceNumber = 3;
MessageUniqueID uniqueID = 4;
Int32Wrapper nullableInt = 5;
}
ここで不足している追加の手順があるようですが、誰でもこれらのタイプを有効にする方法はわかりますか?
があいまいで、例えばnullableInt.HasValueとnullableInt.Valueは、あなたがprotoファイルを定義し、C#クラスを生成するか、C#クラス内のフィールドを定義し、プロトを生成しようとしていますか?簡単な例が明確になるのに役立ちます。 – Guvante
@Guvante私はprotoc.exeを使用してファイル.protoからファイルを.csファイルを生成しようとしています。私はいくつかの詳細とサンプルの.protoファイルを追加するために私の質問を編集しました。 https://github.com/google/protobuf/blob/master/src/google/protobuf/util/internal/testdata/: – pquest
奇妙な私は、そのページの外側Int32Wrapperについての一般的なドキュメントといるProtobufのためのテストケースを見つけることができませんwrappers.proto – Guvante