5

私のアプリケーションは小さなC#データベースであり、BinaryWriterbool、uint32などの基本的な型で正常に動作するファイルにデータベースを保存するために
使用していObjectます。任意のデータ型を格納するため)、ただし、私のアプリケーションはこの変数の実際の型を知らない(または知る必要がない)ため、を使用してそれを書き込む方法がわかりませんBinaryWriter
変数のメモリを取得して保存する方法はありますか?それは信頼できるでしょうか?

編集:

ba_friendによって提供される回答には、オブジェクトをバイト配列に逆シリアル化するための2つの関数があり、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 に答える