反序列化列表不工作
本文关键字:工作 列表 反序列化 | 更新日期: 2023-09-27 17:54:38
我正在使用序列化保存类的列表。这部分工作得很好,但是当我试图反序列化时,它没有做任何事情。
private class Company : ISerializable
{
public string Name;
public System.IO.FileSystemWatcher Watch;
public string Email;
}
方法:
public Company(SerializationInfo info, StreamingContext ctxt)
{
Name = (String)info.GetValue("Name", typeof(string));
Watch.Path = (String)info.GetValue("Watch Path", typeof(string));
Email = (String)info.GetValue("Email address", typeof(string));
}
最后是序列化本身:
Stream stream = File.Open(User + ".osl", FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, CompanyList);
stream.Close();
CompanyList
是包含Company
类对象的列表。当我检查文件时,一切都很完美。然而,当我试图反序列化到CompanyList
时,它不起作用。它没有出错,只是没有返回任何信息。
我刚刚开始使用序列化,所以我肯定我搞砸了什么。
编辑反序列化代码: public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
info.AddValue("Name", Name);
info.AddValue("Watch Path", Watch.Path);
info.AddValue("Email address", Email);
}
看起来是这样的。然后我把它称为公司列表:
(List<Company>)bformatter.Deserialize(stream);
反序列化构造函数很可能因为FileSystemWatcher
为空而抛出异常。
您正在设置Watch
对象的Path
属性,但是您没有初始化实际的Watch
对象,至少在这里显示的代码中没有。