【发布时间】:2019-11-25 13:49:47
【问题描述】:
我正在尝试使用 C# 中的二进制序列化来序列化类对象。我已经尝试过,并且在我所看到的所有示例中,我发现序列化的数据总是进入一个文件。
就我而言,我必须将序列化数据存储在 SQL 中。以下是我创建的方法的示例。
//Serializing the List
public void Serialize(Employees emps, String filename)
{
//Create the stream to add object into it.
System.IO.Stream ms = File.OpenWrite(filename);
//Format the object as Binary
BinaryFormatter formatter = new BinaryFormatter();
//It serialize the employee object
formatter.Serialize(ms, emps);
ms.Flush();
ms.Close();
ms.Dispose();
}
如何直接在字符串变量中获取序列化数据?我不想使用文件。
请帮忙。
【问题讨论】:
-
二进制序列化和字符串不兼容。你为什么要把它放在一个字符串中?因为那时你应该对它进行base64编码。或者,只需使用 VARBINARY 列。
-
你不能!!!对二进制数据使用字符串方法会损坏数据。 c#要求使用编码将二进制数据转换为字符串,编码会改变或删除不符合编码的字节。从示例中使用 UTF8 编码将消除字节 0x80。
-
这一点我怎么强调都不为过:
BinaryFormatter不是适用于这种情况;事实上,在大多数情况下,您应该认为BinaryFormatter已过时且已弃用 - 有 很多 已知不使用它的原因,并且已经进行了许多尝试以正式弃用它。这不是“这会伤害我吗?”的情况。 - 仅是“when”的情况。如果您只想存储数据,还有 很多 其他序列化程序 - 二进制和基于文本的,它们没有BinaryFormatter那样的巨大红色警告标志。如果您愿意,很乐意提供建议。
标签: c# serialization binary binaryformatter