2017-04-25 9 views
1

Proto3 C# Referenceは、次のテキストが含まれています:Nullableタイプをプロトコルバッファ経由で送信できますか?

ラッパー・タイプのフィールドproto3ではよく知られているタイプのほとんどは、コード生成、 が、ラッパー型(StringWrapper、Int32Wrapperなど)には影響しません

プロパティの種類と動作を に変更します。

C#の値型に (Int32WrapperDoubleWrapperBoolWrapperなど)に対応するラッパー型のすべては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; 
} 

ここで不足している追加の手順があるようですが、誰でもこれらのタイプを有効にする方法はわかりますか?

+1

があいまいで、例えばnullableInt.HasValueとnullableInt.Valueは、あなたがprotoファイルを定義し、C#クラスを生成するか、C#クラス内のフィールドを定義し、プロトを生成しようとしていますか?簡単な例が明確になるのに役立ちます。 – Guvante

+0

@Guvante私はprotoc.exeを使用してファイル.protoからファイルを.csファイルを生成しようとしています。私はいくつかの詳細とサンプルの.protoファイルを追加するために私の質問を編集しました。 https://github.com/google/protobuf/blob/master/src/google/protobuf/util/internal/testdata/: – pquest

+1

奇妙な私は、そのページの外側Int32Wrapperについての一般的なドキュメントといるProtobufのためのテストケースを見つけることができませんwrappers.proto – Guvante

答えて

0

あなたはこれが機能するためには、Google /いるProtobuf/wrappers.protoをインポートする必要があります。

syntax ="proto3"; 
package prototest; 
import "MessageIdentifier.proto"; 
import "google/protobuf/wrappers.proto"; 

message TestMessage { 
    string messageTest = 1; 
    fixed64 messageTimestampTicks = 2; 
    uint32 sequenceNumber = 3; 
    MessageUniqueID uniqueID = 4; 
    google.protobuf.Int32Wrapper nullableInt = 5; 
} 

これをintとして使用できますか?フィールドの宣言

関連する問題