使用c#序列化异常
本文关键字:异常 序列化 使用 | 更新日期: 2023-09-27 17:52:57
我是c#的新手,正试图将一些信息写入文件。当我在同一个。cs文件中拥有Car类时,我得到了程序正常运行,但是当我将该类删除到项目中的另一个。cs文件中时,我得到
的运行时错误。下面是包含Car类的代码。当我将类移动到它自己的Car.cs文件时,错误开始被抛出。"SerializationException未被处理:ObjectManager发现了一个无效数量的修复程序。这通常表明"格式化程序"有问题。
namespace ConsoleApplication2
{
class Program
{
[Serializable()]
public class Car
{
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
public Car(string make, string model, int year)
{
Make = make;
Model = model;
Year = year;
}
}
/// <summary>
/// Deserializes list of cars and returns the list to user
/// </summary>
/// <returns>Returns deserialized car list</returns>
public List<Car> ReadList()
{
//create local list to hold data
List<Car> carList = new List<Car>();
try
{
using (Stream stream = File.Open("data.bin", FileMode.Open))
{
BinaryFormatter bin = new BinaryFormatter();
//point carList to deserialized stream
carList = (List<Car>)bin.Deserialize(stream);
}
}
catch (IOException)
{
}
return carList;
}
第一次创建data.bin时,类类型与数据一起存储。如果您更改了类的名称空间,那么格式化程序将无法找到存储的类。
如果您使用Asp。Net和有这个问题,你需要清除浏览器缓存和cookie,因为解决方案与清洁bin文件夹不工作(重新启动iis也没有工作)