Allows you to provide your own custom binary serialization
When a class needs to control its serialization process it can implement this interace
The order in which objects are deserialized cannot be guaranteed
public class MyClass : ISerializable
Serialization is the process of converting complex objects into a stream of bytes for storage
This method is called to serialise the object.
Populates a SerializationInfo with the data needed to serialize the target object
A special constructor method is called to deserialize the object.