自定义控件序列化

时间:2013-01-30 14:45:31

标签: c# serialization dictionary

我在c#中序列化和反序列化某些对象时遇到了一些问题。

我有一个自定义控件,其中包含一些我要保存的属性,定义如下

[Serializable()]
public partial class customUC: UserControl, ISerializable
{
    (...)some methods here

    public customUC(SerializationInfo info, StreamingContext ctxt)
    {
        this.att = (int)info.GetValue("att", typeof(int));
    }

    public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
    {
        info.AddValue("att", this.att);
    }
}

在另一个班级,我有一个字典,我按如下顺序排列:

[Serializable()]
public partial class data: ISerializable 
{
    public Dictionary<int, customUC> states  { get; private set;}

    (...)some methods here

    public IVRDataModel(SerializationInfo info, StreamingContext ctxt)
    {
        **this.states = (Dictionary<int,customUC>)info.GetValue("states",typeof(Dictionary<int,customUC>));**
    }

    public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {            
            info.AddValue("states", this.states);
        }
}

我正在使用二进制格式化程序对类数据进行序列化,如下所示:

using (var stream = File.Create(path))
{
    BinaryFormatter bFormatter = new BinaryFormatter();
    bFormatter.Serialize(stream, this);
}

使用反序列化:

Stream stream = File.Open(path, FileMode.Open);
BinaryFormatter bFormatter = new BinaryFormatter();
data d = (data)bFormatter.Deserialize(stream);
stream.Close();

问题是我无法反序列化词典中的项目。

info.GetValue("states",typeof(Dictionary<int,customUC>)

似乎返回一个空字典。

0 个答案:

没有答案