Есть ли способ указать пакетный протокол в XML, чтобы (де) сериализация могла происходить автоматически?
Контекст выглядит следующим образом.У меня есть устройство, которое общается через последовательный порт.Он отправляет и получает поток байтов, состоящий из «пакетов».Пакет - это набор элементарных типов данных и (иногда) других пакетов.Некоторые элементы пакетов являются условными;их включение зависит от более ранних элементов.
У меня есть приложение C #, которое связывается с этим устройством.Естественно, я не хочу работать на уровне байтов в моем приложении;Я хочу отделить протокол от кода моего приложения.Поэтому мне нужно преобразовать поток байтов в структуры (классы).
В настоящее время я реализовал протокол в C #, определив класс для каждого пакета.Эти классы определяют порядок и тип элементов для каждого пакета.Сделать членов класса условным делом сложно, поэтому информация о протоколе заканчивается в функциях.
Я представляю XML, который выглядит следующим образом (обратите внимание, что мой опыт разработки XML ограничен):
<packet>
<field name="Author" type="int32" />
<field name="Nickname" type="bytes" size="4">
<condition type="range">
<field>Author</field>
<min>3</min>
<max>6</min>
</condition>
</field>
</packet>
.NETесть что-то под названием «двоичный сериализатор», но я не думаю, что это то, что я ищу.
Есть ли способ разделить протокол и код, даже если пакеты «включают» другие пакеты и имеют условныеэлементы?