A class that supports serialization must implement this interface.
Every solid (i.e. non-abstract) class that implements the ISerializable interface must provide a public default constructor.
Initializes the state of this object from the given data stream.
The Deserialize method will be called immediately after the object has been instantiated via its default constructor.
If an I/O error has occurred.