Given the following example:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; namespace SerializationTest { [Serializable] class Foo : Dictionary<int, string> { } class Program { static void Main(string[] args) { Foo foo = new Foo(); foo[1] = 'Left'; foo[2] = 'Right'; BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, foo); stream.Seek(0, SeekOrigin.Begin); formatter.Deserialize(stream); } } }
In the last line, a SerializationException is thrown because the formatter can’t find the constructor to Foo. Why is that?
Append the following code lines in the class Foo
The class needs an constructor with the relevant serialisation parameters.