почему десериализованный объект protobuf-net DataType не отображается со значением Enum? - PullRequest
0 голосов
/ 10 октября 2018

Мы используем библиотеку protobuf-net для декодирования сообщений MQTT, предоставляемых программным обеспечением Inductive Automation - Ignition, которое основано на полезной нагрузке sparkplug_b.proto.

Мы сгенерировали код c # с отличным онлайнИнструмент Protogen (с проверкой «должен использовать Enum»)Так что теперь мы можем декодировать двоичные объекты сообщений, например, в читаемый человеком JSON (см. Ниже).Но тип данных не отображается со значением перечисления в JSON.net.В полезной нагрузке есть доступные перечисления. Нужно ли вносить изменения в автоматически сгенерированный код вручную, чтобы исправить это?

{
  "Timestamp": 1538568112852,
  "Metrics": [
    {
      "Name": "bdSeq",
      "Timestamp": 1538568112852,
      "Datatype": 4,
      "IsNull": false,
      "LongValue": 0
    }
  ],
  "Seq": 18446744073709551615
}

С уважением,

1 Ответ

0 голосов
/ 17 октября 2018

Полагаю, вы говорите о

public ValueOneofCase ValueCase => (ValueOneofCase)__pbn__value.Discriminator;

Полагаю, возможно ваш сериализатор JSON может пропустить его, потому что нет "set"?

...