【发布时间】:2015-12-29 18:15:53
【问题描述】:
上面的图片只是显示了下面的代码,你可以使用任何一个来帮助我解决我的噩梦。谢谢小伙伴们
List<IpayableStaff> employeeList = new List<IpayableStaff>();
private void LoadData()
{
FileStream inFile;
BinaryFormatter bformatter = new BinaryFormatter();
if (File.Exists(filename))
{
inFile = new FileStream(filename, FileMode.Open, FileAccess.Read);
while (inFile.Position < inFile.Length)
{
IpayableStaff load = (IpayableStaff)bformatter.Deserialize(inFile);
employeeList.Add(load);
lstEmployees.Items.Add(load);
}
inFile.Close();
}
}
private void SaveData()
{
FileStream outFile;
BinaryFormatter bformatter = new BinaryFormatter();
if (lstEmployees.Items.Count > 0)
{
//opening the file in order to write in to it
outFile = new FileStream(filename, FileMode.Create, FileAccess.Write);
for (int i = 0; i < lstEmployees.Items.Count; i++)
{
//write on file via serialization
bformatter.Serialize(outFile, lstEmployees.Items[i]);
}
//closing the file
outFile.Close();
}
}
有一个错误,但我看不到,请帮助我尝试了很多可能的解决方案,但直到现在都没有
【问题讨论】:
-
"有一个错误但我看不到" -- 错误信息是什么?
-
您应该能够一次对整个
employeeList进行反序列化。尤其是使用 BinaryFormatter 逐条记录可能是个问题; 然后 而不是将项目复制到列表框中,只需将员工列表用作数据源。从图片上看,您似乎序列化了员工对象以外的其他东西——也许是列表框项目?没看到不能说SaveData -
如果您检查图片,您将显示错误消息
-
但是错误消息(应该是 in 帖子)表明您序列化的类型与您尝试反序列化的类型不同。如果我们可以看到 SaveData,我们可以确定
-
private void SaveData() { FileStream outFile; BinaryFormatter bformatter = new BinaryFormatter(); if (lstEmployees.Items.Count > 0) { outFile = new FileStream(filename, FileMode.Create, FileAccess.Write); for (int i = 0; i
标签: c# load external filestream