My application is a small C# database, and I'm using BinaryWriter
to save the database to a file which is working fine with the basic types such as bool, uint32 etc.
Although I've got a variable that is of type Object
(allowing the user to store any data type), however as my application doesn't (nor needs to) know the real type of this variable, I'm unsure how to write it using BinaryWriter
.
Is there a way I could perhaps grab the memory of the variable and save that? Would that be reliable?
Edit:
The answer provided by ba_friend has two functions for de/serialising an Object to a byte array, which can be written along with its length using a BinaryWriter.
You can use serialization for that, especially the BinaryFormatter
to get a byte[]
.
Note: The types you are serializing must be marked as Serializable with the [Serializable]
attribute.
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);
}
}