我在 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>)
似乎返回一个空字典。