【发布时间】:2021-10-06 19:55:40
【问题描述】:
在我的应用程序中,我通过 UDP 接收二进制数据,我编写了一个二进制读取器,它逐字段读取并读取适当的类型并将其手动分配给模型。有没有一种方法来定义模型,告诉某种(反)序列化程序在哪里寻找某个字段而不是分配所有内容?
某些字段可能是数组 - 它们的大小是已知且固定的,但模型不知道这一点。
示例(当前代码):
byte Field1 = binaryReader.ReadByte();
sbyte Field2 = binaryReader.ReadSByte();
float[] Field3 = ...
//etc.
所需代码:
public class Model
{
[BinaryPosition(1)]
public byte Field1 { get; set;}
[BinaryPosition(2)]
public sbyte Field2 { get; set; }
[BinaryPosition(3)]
public float[] Field3 { get; set; }
}
//...
var model = BinaryDeserializer.Deserialize<Model>(byteBuffer);
【问题讨论】: