在Object上使用BinaryWriter

R4D*_*4D4 4 c# database binarywriter

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

编辑:

ba_friend提供的答案有两个函数用于将Object解序/序列化为字节数组,可以使用BinaryWriter将其与其长度一起写入.

ba_*_*end 10

您可以使用序列化,尤其是BinaryFormatter获取序列化byte[].
注意:您要序列化的类型必须使用该属性标记为Serializable[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();
    }
}
Run Code Online (Sandbox Code Playgroud)
public static object DeserializeFromBytes(byte[] bytes)
{
    var formatter = new BinaryFormatter();
    using (var stream = new MemoryStream(bytes))
    {
        return formatter.Deserialize(stream);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • Microsoft 建议不要使用 BinaryFormatter:https://learn.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide (7认同)