2

我在 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>)

似乎返回一个空字典。

4

0 回答 0