public static List<Restaurant> LoadRestaurantList()
{
FileStream fs = new FileStream("Restaurant.txt", FileMode.OpenOrCreate);
BinaryFormatter bf = new BinaryFormatter();
List<Restaurant> rest =(List<Restaurant>)bf.Deserialize(fs);
fs.Close();
return rest;
}
我将Serailze的通用列表存入“Restaurant.txt”文件。
现在我想反序列化并将其返回到通用列表中,我已经尝试过了 但它没有工作,它给出错误“无效的演员表达”。
这是序列化代码:
public static void SaveRestaurantList(List<Restaurant> restaurantList)
{
FileStream fs = new FileStream("Restaurant.txt", FileMode.Create, FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
for (int i = 0; i < restaurantList.Count; i++)
{
Restaurant r = new Restaurant();
r = (Restaurant)restaurantList[i];
bf.Serialize(fs, r);
fs.Flush();
}
fs.Close();
}
任何人都可以帮忙解决这个问题。
答案 0 :(得分:1)
序列化和反序列化是彼此相反的。这意味着序列化期间使用的类型在反序列化期间需要相同。
在您的代码中并非如此。您序列化了餐厅类型,但是当您反序列化时,您需要一个列表。
按如下方式调整序列化代码:
public static void SaveRestaurantList(List<Restaurant> restaurantList)
{
using(FileStream fs = new FileStream("Restaurant.txt", FileMode.Create, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, restaurantList);
}
}