Погуглив вокруг, я получаю много смешанных результатов со старых. NET версий и т. Д.
При заданном протоколе сообщений:
- Байт 0-1 : Идентификатор типа сообщения
- Байт 2: Номер сообщения
- Байт 3: Размер полезной нагрузки
- Байт 4 ... n-1: Данные полезной нагрузки
- Байт n, n + 1: контрольная сумма
Я хочу написать C# класс Message
, который может сериализоваться и десериализоваться с byte[]
, который в идеале мог бы иметь в качестве своего ядра что-то вроде этого (я использую свойства, но члены в порядке, если это важно)
class Message
{
public Int16 Type {get; set;}
public byte Number {get; set;}
public byte PayloadSize {get; set;}
public byte[] Payload{get; set;}
public Int16 CheckSum {get; set;}
}
Конечно, написать код для этого достаточно просто, но я знаю. NET имеет некоторые автоматические c (де) функции сериализации, которые было бы неплохо избежать ошибок кодирования в унылом коде котельной плиты. Однако мне нужно гарантировать порядок, и т. Д. c, чтобы был соблюден протокол.
Позволяет ли современный. NET Framework (4.x) позволить автоматизировать это, и если да, то что это? Как, например, контролируется порядок следования атрибутов? И как мне на самом деле создавать экземпляры и сериализовать объекты из / в byte[]
?
Я должен добавить, я знаю, что можно написать такую вещь, используя отражение, но решение, которое требует больше работы, чем решаемой проблемы не очень полезно. Также я не заинтересован в использовании некоторой библиотеки кода, если она не очень хорошо протестирована, это действительно вопрос встроенных возможностей C#.