反序列化列表不工作

本文关键字:工作 列表 反序列化 | 更新日期: 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对象,至少在这里显示的代码中没有。