通过实现 ISerializable 添加更多控制

这样可以更好地控制序列化,如何保存和加载类型

实现 ISerializable 接口并创建一个空构造函数进行编译

[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));
    }
}

对于数据序列化,你可以指定所需的名称和所需的类型

info.AddValue("_name", _name, typeof(string));

反序列化数据后,你将能够读取所需的类型

_name = (string)info.GetValue("_name", typeof(string));