メッセージがあります (OuterMessage と呼びます)
message OuterMessage {
optional int64 id = 1;
optional InnerMessage inner = 2;
}
そして内なるメッセージ
message InnerMessage {
optional string type = 1;
optioanl int64 id = 2;
}
OuterMessage で parseFrom を呼び出すとOuterMessage.parseFrom(buffer)
、メソッドは返されず、例外もスローされません。しかし、InnerMessage.parseFrom(buffer)
そうすると、空の InnerMessage インスタンスが返されます。
protobuf-net を使用してメッセージをシリアル化しています。問題の原因は何ですか?
更新: デバッガー コンソールを確認したところ、次の例外がスローされました。
Caused by: java.lang.IllegalArgumentException: Invalid embedded descriptor for "KeyValuePackageResponse.proto".
at com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Descriptors.java:286)
at com.myproj.protobuf.KeyValuePackageResponseProtocol.<clinit>(KeyValuePackageResponseProtocol.java:538)
... 15 more
Caused by: com.google.protobuf.Descriptors$DescriptorValidationException: KeyValuePackageResponse.proto: Dependencies passed to FileDescriptor.buildFrom() don't match those listed in the FileDescriptorProto.
at com.google.protobuf.Descriptors$FileDescriptor.buildFrom(Descriptors.java:231)
at com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Descriptors.java:284)
JavaとC#の両方で同じ.protoファイルをチェックしました。このメッセージKeyValuePackageResponseProtocol
は、正常に初期化されているように見える他の多くのメッセージでも使用されています。この問題を解決するために確認する必要がある特定のことはありますか?