我有一个我想序列化到内存缓冲区的对象,然后通过 UART 将其发送到嵌入式设备。我在 Windows 上的 C# 环境中工作。
我想做的是创建两个如下所示的类:
class StatusElement
{
byte statusPart1;
byte statusPart2;
}
class DeviceCommand
{
byte Address;
byte Length;
StatusElement[] statusElements; // Can have an arbitrary number of elements in it
}
我想使用序列化,最好是基于 c# 序列化的东西,将第二个类转换为字节流。
问题是嵌入式设备被硬编码以接受精确的序列(AddressByte、LengthByte .... ErrorCorrectionByte),所以我不能使用常规的 C# 序列化,它会在流中添加序列化元数据。这也排除了其他序列化,如 Protobuf。
所以我的问题是:是否可以自定义 c# 序列化以获得我需要的输出?如何?
- - 更新 - -
感谢大家的帮助。经过考虑,我决定使用反射和每个类型的处理程序来实现我自己的迷你序列化器。更复杂,但给了我更多的灵活性和自动化能力。