Implement the special deserialization constructor as described in the MSDN library documentation for ISerializable :
The ISerializable interface implies a constructor with a signature constructor (SerializationInfo information, StreamingContext context). At the time of deserialization, the current constructor is called only after the data in SerializationInfo has been deserialized by formatting. In general, this constructor should be protected if the class is not sealed.
For instance:
protected Widget(SerializationInfo info, StreamingContext context) {
source share