C#中的二进制序列化(实际上是WYSIWYG序列化)
|
(对于“所见即所得”,我的意思是我决定写什么以及如何写,而不是Microsoft或Google的任何人)(好吧...从技术上讲我什么都不会决定...几年前编程的人决定,我只能问我必须跳多高)
今天我有点愚蠢,但是我已经浪费了两个小时寻找解决方案:-(。
现在...
我有一个二进制协议。它是基于C的,因此就像查看一个定义了计算机的字节序的C结构(幸运的是,它与\“ local \”字节序相同),其大小不同定义类型,定义数据结构对齐方式,定义结构布局,以已知编码将字符串固定为chars固定数组...一切都已定义!当您使用
[(LayoutKind.Explicit)]
时,一切都与C#unsafe struct
非常相似,并且对数组使用fixed
修饰符不是很挑剔。现在,我需要在C#中对其进行序列化/反序列化...我环顾了一下,但是却找不到任何东西...我错过了什么?在您问之前,我知道BinaryFormatter
,但这对我来说还不够好...BinaryFormatter
实现了其格式化语言。是的,我知道ѭ5(并且它没有实现big-endian的转换器),但这不是一个“完整”的解决方案。它只是“基础”工具。而且我知道BinaryWriter
/BinaryReader
,但是它们似乎不支持不是byte[]
或char[]
的数组,并且它们似乎无法在写入时“填充”数组(您有一个5个元素byte[]
数组,您需要将其编写为10个元素byte[]
数组,因为您使用的格式需要它...您必须编写代码行才能这样做)
计划B(甚至可能是计划Z)是为每个类创建一个影子unsafe struct
,使用两个方法(Read
和Write
)创建IWysiwygSerializable
接口,并在每个类中实现该接口(写入操作将填充ulate0ѭ并将其写入输出中流,读操作将相反)(或者我甚至可以在不使用ѭ20的情况下直接在Read
和Write
中执行数十个BitConverter
,但对于数组则要困难一些)
谢谢!
没有找到相关结果
已邀请:
3 个回复
畦桨存灯
席陋临拈
疾桓
,
,
...(显然也使用了流利符号)。然后,您的描述将被编译为表达式树,然后被编译为一组动态方法(序列化数据的序列化,反序列化和大小)。 测试类的串行器的一小部分示例
显然,仅当您必须对大量数据进行序列化/反序列化时,此库才是好的。如果您只有一个要序列化/反序列化的对象,那么
/
可能就足够了(正如我在原始问题中所建议的那样,以及在Fantius的回答中所建议的)。