1 に答える
あなたは基本的にそれを理解したようです。
実際には一般向けに設計されていないプロトコル コンパイラ内の API に深く入り込んでいます。物事を単純化するためのヘルパー レイヤーを作成した人がいないため、複雑になります。これらの機能を使用する人は多くないためです。
Message
「神クラス」という意味がよくわかりません。Message
は、protobuf インスタンスの単なる抽象インターフェイスです。記述子は、protobuf インスタンスのタイプを記述します。Message::getDescriptor()
メッセージのタイプを返しますが、それを超えて、これらの API 間の直接的な接続はあまりありません...
FileDescriptorSet を使用せずにソース情報を含める方法はありませんか?
コメントは、生成されたコードに埋め込まれた記述子から意図的に削除されるため、パーサーを個別に実行し、記述子セットを生成し、動的に使用する必要があります。
FileDescriptorSet を具体的な Message クラス/インスタンスに「接続」/設定することは可能ですか?
ソースファイルからのコメントデータを含む記述子を Message::getDescriptor() に返してほしいということですか? そのためには、コメント データを生成されたコードに埋め込む必要があり、これprotoc
を実装するのは簡単ですが (現在は意図的にそれらを取り除いているため、そうしなくてもよいでしょう)、肥大化して危険な可能性があります (秘密が明らかになる可能性があります) protobufs でビルドされたクローズドソースのバイナリを出荷する人々)。