Как разобрать сообщение в класс DynamicMessage, а затем выполнить итерацию по полям?

Вот что я пытаюсь выяснить, их документы недостаточно хорошо объясняют это, по крайней мере, для меня..

Сенарио:

У меня есть 5 прото-файлов, которые я генерирую с помощью protoc для C++. Мое приложение должно получить сообщение, а затем иметь возможность перебирать все поля при доступе к их значениям и именам.

Что я хотел бы сделать, так это проанализировать сообщение в классе DynamicMessage, а затем выполнить итерацию по полям. Таким образом, мне не нужно точно знать, что это за сообщение, и я могу обрабатывать их все одним общим способом.

Я знаю, что можно обрабатывать сообщения, анализируя их до определенного типа, а затем рассматривая их как базовый класс сообщений, но для моего приложения это нежелательно.

Похоже, то, что я хочу сделать, должно быть возможно с помощью «--дескриптора _set _out» и динамического класса сообщений.

Что я пробовал(И потерпел неудачу с):

Я переместил descriptor.proto в папку с моими прототипами и включил его вместе с другими на этапе компиляции. Я также установил --дескриптор _установил _флаг вывода для печати в файл "my _descriptors.pb.ds"

Я понятия не имею, куда двигаться дальше.

Вот то, на что я ссылался, хотя там немного... Извините за длинное сообщение и несколько расплывчатую схему именования тем.

Кроме того, если это было неясно, я предполагаю, что сообщения не «Неизвестно». Я предполагаю, что по-прежнему будет требоваться включение соответствующих заголовков для каждого прототипа, чтобы мой код знал о «неизвестном» сообщении, которое он обрабатывает.

7
задан Rachel Gallen 7 April 2013 в 20:25
поделиться