Adding more control by implementing C# with Example
ISerializable That would get more control over serialization, how to save and load types Implement ISerializable interface and create an empty constructor to compile [Serializable] public class Item : ISerializable { private string _name; public string Name { get { return _name; } set { _name = value; } } public Item () { } protected Item (SerializationInfo info, StreamingContext context) { _name = (string)info.GetValue("_name", typeof(string)); } public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("_name", _name, typeof(string)); } } For data serialization, you can specify the desired name and the desired type info.AddValue("_name", _name, typeof(string)); When the data is deserialized, you will be able to read the desired type _name = (string)info.GetValue("_name", typeof(string));