5

我的应用程序是一个小型 C# 数据库,我BinaryWriter用来将数据库保存到一个文件,该文件适用于 bool、uint32 等基本类型。
虽然我有一个类型的变量Object(允许用户存储任何数据类型),但是由于我的应用程序不(也不需要)知道这个变量的真实类型,我不确定如何使用BinaryWriter.
有没有办法我可以抓住变量的内存并保存它?那会可靠吗?

编辑:

ba_friend 提供的答案有两个函数用于将对象反序列化为字节数组,可以使用 BinaryWriter 将其连同其长度一起写入。

4

1 回答 1

10

您可以为此使用序列化,尤其是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);
    }
}
于 2011-07-20T09:55:39.587 回答