在.NET5之前,我们通过以下代码对字节/对象进行序列化/反序列化:
private static byte[] StructToBytes<T>(T t)
{
using (var ms = new MemoryStream())
{
var bf = new BinaryFormatter();
bf.Serialize(ms, t);
return ms.ToArray();
}
}
private static T BytesToStruct<T>(byte[] bytes)
{
using (var memStream = new MemoryStream())
{
var binForm = new BinaryFormatter();
memStream.Write(bytes, 0, bytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
var obj = binForm.Deserialize(memStream);
return (T)obj;
}
}
但是由于安全原因,BinaryFormatter 将被移除:
https://learn.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
那么是否有一种简单但高性能的方法来替换BinaryFormatter?
BinaryFormatter
高度兼容,您可以查看我的二进制序列化程序这里。还请参阅安全注意事项,大小比较和相关问题。 - undefined