【发布时间】:2013-04-09 13:33:26
【问题描述】:
我正在重载 System.IO BinaryReader 以序列化某些类以用于文件存储。我在处理字典之类的项目时没有遇到任何问题,但使用可空类型并没有成功。有可能吗?具体来说,我正在尝试十进制?和字符串?,但任何类型都应该适合我的解决方案。
出于特定的业务原因,我必须进行二进制序列化,因此请将响应限制为仅适用于此的解决方案。
例如...读取/写入字节数组我使用这些方法:
public byte[] ReadByteArray()
{
int len = ReadInt32();
if (len > 0) return ReadBytes(len);
if (len < 0) return null;
return new byte[0];
}
public override void Write(byte[] b)
{
int len = b.Length;
Write(len);
if (len > 0) base.Write(b);
}
【问题讨论】:
-
你能提供一个代码示例吗?
-
有什么原因不能使用内置的 BinaryFormatter 吗?
-
内置有速度问题。通过这种方式,我的速度提高了 20-100 倍。我想我通过检查值是否在开始时为空来解决它,然后根据需要使用默认阅读器。
-
byte[] myNull = ReadByteArray();//withnegative int32 'len'
标签: c# nullable binary-serialization