The first time you play with serialization in C # ... any help would be greatly appreciated! The following is a generic serializer and deserializer pedigree:
public static string SerializeObject<T>(T objectToSerialize) { BinaryFormatter bf = new BinaryFormatter(); MemoryStream memStr = new MemoryStream(); try { bf.Serialize(memStr, objectToSerialize); memStr.Position = 0; return Convert.ToBase64String(memStr.ToArray()); } finally { memStr.Close(); } } public static T DeserializeObject<T>(string str) { BinaryFormatter bf = new BinaryFormatter(); byte[] b = System.Text.Encoding.UTF8.GetBytes(str); MemoryStream ms = new MemoryStream(b); try { return (T)bf.Deserialize(ms); } finally { ms.Close(); } }
This is the object I'm trying to serialize:
[Serializable()] class MatrixSerializable : ISerializable { private bool markerFound; private Matrix matrix; public MatrixSerializable( Matrix m, bool b) { matrix = m; markerFound = b; } public MatrixSerializable(SerializationInfo info, StreamingContext ctxt) { markerFound = (bool)info.GetValue("markerFound", typeof(bool)); matrix = Matrix.Identity; if (markerFound) {
And an example of how to run it:
MatrixSerializable ms = new MatrixSerializable(Matrix.Identity * 5, true); string s = Serializer.SerializeObject<MatrixSerializable>(ms); Console.WriteLine("serialized: " + s); ms = Serializer.DeserializeObject<MatrixSerializable>(s); Console.WriteLine("deserialized: " + ms.Matrix + " " + ms.MarkerFound);
When I try to run this, I get the error "SerializationException was unhandled: input stream is not a valid binary format. Initial content (in bytes): 41-41-45-41-41-41-44 -2F-2F-2F -2F-2F-41-51-41-41-41 ... "
Any advice on what I'm doing wrong or how to fix this will be greatly appreciated!
ElfsUs source share