c#中的二进制序列化
Binary Serialization in c#
我正在尝试在 C# 中使用二进制序列化来序列化一个 class 对象。我已经尝试过,并且在所有我能找到的地方,在我看到的所有示例中,序列化数据总是进入一个文件。
在我的例子中,我必须将序列化数据存储在 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();
}
如何在字符串变量中直接获取序列化数据?我不想使用文件。
请帮忙。
只需使用 MemoryStream ms = new MemoryStream()
而不是您的文件流。
你可以通过调用ms.ToArray()
序列化后提取一个byte[]用于Storage到SQL。
并且不要忘记将您的 Stream 放入 using
-Statement 中,以保证正确处理分配的资源。
在 C#
中将字节数组表示为字符串的最简单方法是使用 base64
编码。下面的示例显示了如何在您的代码中实现这一点。
public void Serialize(Employees emps, String filename)
{
//Create the stream to add object into it.
MemoryStream ms = new MemoryStream();
//Format the object as Binary
BinaryFormatter formatter = new BinaryFormatter();
//It serialize the employee object
formatter.Serialize(ms, emps);
// Your employees object serialised and converted to a string.
string encodedObject = Convert.ToBase64String(ms.ToArray());
ms.Close();
}
这将创建字符串 encodedObject
。要从字符串中检索字节数组和序列化对象,您将使用以下代码。
BinaryFormatter bf = new BinaryFormatter();
// Decode the string back to a byte array
byte[] decodedObject = Convert.FromBase64String(encodedObject);
// Create a memory stream and pass in the decoded byte array as the parameter
MemoryStream memoryStream = new MemoryStream(decodedObject);
// Deserialise byte array back to employees object.
Employees employees = bf.Deserialize(memoryStream);
我正在尝试在 C# 中使用二进制序列化来序列化一个 class 对象。我已经尝试过,并且在所有我能找到的地方,在我看到的所有示例中,序列化数据总是进入一个文件。
在我的例子中,我必须将序列化数据存储在 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();
}
如何在字符串变量中直接获取序列化数据?我不想使用文件。
请帮忙。
只需使用 MemoryStream ms = new MemoryStream()
而不是您的文件流。
你可以通过调用ms.ToArray()
序列化后提取一个byte[]用于Storage到SQL。
并且不要忘记将您的 Stream 放入 using
-Statement 中,以保证正确处理分配的资源。
在 C#
中将字节数组表示为字符串的最简单方法是使用 base64
编码。下面的示例显示了如何在您的代码中实现这一点。
public void Serialize(Employees emps, String filename)
{
//Create the stream to add object into it.
MemoryStream ms = new MemoryStream();
//Format the object as Binary
BinaryFormatter formatter = new BinaryFormatter();
//It serialize the employee object
formatter.Serialize(ms, emps);
// Your employees object serialised and converted to a string.
string encodedObject = Convert.ToBase64String(ms.ToArray());
ms.Close();
}
这将创建字符串 encodedObject
。要从字符串中检索字节数组和序列化对象,您将使用以下代码。
BinaryFormatter bf = new BinaryFormatter();
// Decode the string back to a byte array
byte[] decodedObject = Convert.FromBase64String(encodedObject);
// Create a memory stream and pass in the decoded byte array as the parameter
MemoryStream memoryStream = new MemoryStream(decodedObject);
// Deserialise byte array back to employees object.
Employees employees = bf.Deserialize(memoryStream);