我的应用程序是一个小型C#数据库,我使用BinaryWriter将数据库保存到一个文件中,该文件可以很好地处理基本类型,如bool、uint32等。
虽然我有一个Object类型的变量(允许用户存储任何数据类型),但是由于我的应用程序不知道这个变量的真正类型,所以我不确定如何使用BinaryWriter编写它。
有什么方法可以让我抓住这个变量的内存并保存它吗?那可靠吗?
编辑:
ba_friend提供的答案有两个函数,用于将一个对象反/序列化为一个字节数组,这个数组可以使用一个BinaryWriter与其长度一起写入。
发布于 2011-07-20 09:55:39
您可以为此使用序列化,特别是BinaryFormatter来获取byte[]。
备注:您正在序列化的类型必须标记为具有[Serializable]属性的可序列化。
public static byte[] SerializeToBytes<T>(T item)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, item);
stream.Seek(0, SeekOrigin.Begin);
return stream.ToArray();
}
}public static object DeserializeFromBytes(byte[] bytes)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream(bytes))
{
return formatter.Deserialize(stream);
}
}https://stackoverflow.com/questions/6759604
复制相似问题