Производные классы с разными типами значений - PullRequest
0 голосов
/ 30 марта 2020

Я сталкиваюсь с некоторой дилеммой дизайна. Как бы вы решили это?

Я получаю пакет через UDP в виде байта []. Затем я анализирую этот массив в объект пакета. Этот пакет имеет несколько атрибутов (например, имя пользователя, пароль, отметка времени).

Итак, я написал анализатор атрибутов, который анализирует байт [] в объект атрибута. Атрибут имеет разные свойства, такие как AttributeId и Value. Проблема в том, что эти значения свойств могут иметь разные типы (например, имя пользователя и пароль имеют тип строки ascii, отметка времени имеет тип long et c ..)

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

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

Как вы обычно обрабатываете ситуацию такого типа?

РЕДАКТИРОВАТЬ: Отправитель сообщения не находится под моим контролем и следует RF C 2865 . Пример того, как может выглядеть сообщение.

  • 1-й байт - Код типа сообщения
  • Следующий байт - Идентификатор клиента
  • Следующие 2 байта - Длина сообщения (количество байтов)
  • Следующие 16 байтов - Псевдослучайный токен
  • Остальные байты - Атрибуты запроса

Все эти атрибуты следуют этому формату.

  • 1-й байт - Тип атрибута (это определяет тип значения)

  • Следующий байт - Длина атрибута (количество байтов)

  • Байт остатка - Значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...