通過實現 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));