Creating a custom serialization class
Sometimes it is not enough to mark a whole class as serializable, quite often a class will have .net internal type that is not serializable, for example XmlDocument. In such case we need a wrapper class that is derived from ISerializable interface.