如何序列化不同类型的多个对象?

时间:2014-01-09 23:49:54

标签: c#

我正在尝试序列化一个对象数组和一个字符串。这是序列化代码:

FileStream s;
s = new FileStream(savefile.FileName, FileMode.Create, FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(s, ch.chaps);
bf.Serialize(s, txtPassword.Text);
s.Close();

这是反序列化代码:

FileStream s;
s = new FileStream(openfile.FileName, FileMode.Open, FileAccess.Read);
BinaryFormatter bf = new BinaryFormatter();
string password = (string)bf.Deserialize(s);
ch.chaps = (Chapter[])bf.Deserialize(s);
s.Close();
int i;

if (password == txtPassword.Text)
{
    for (i = 0; i <= 1000; i++)
    {
        try
        {
            combChapSelect.Items.Add(ch.chaps[i].chapName);         
        }
        catch
        {
             i = 1000;
        }
    }
}

这是代码和visual studio说没有错误但是当我选择一个文件时没有发生任何事情时openfiledialog没有关闭。我做错了什么或有其他方法来序列化不同的对象类型吗?

1 个答案:

答案 0 :(得分:1)

你正在倒退。您必须按序列化的顺序反序列化。

在序列化中,它的chaps-then-password。在你的反序列化中,它的密码然后是chaps。