我是C#的新手,我正在尝试将一些信息写入文件。当我将Car类放在同一个.cs文件中时,我让程序正常运行,但是当我将这个类移到项目中的另一个.cs文件中时,我得到运行时错误
“未处理SerializationException:ObjectManager发现修复数量无效。这通常表示Formatter中存在问题”。
以下是包含Car类的代码。当我将类移动到它自己的Car.cs文件时,错误开始被抛出。
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;
}
答案 0 :(得分:3)
首次创建data.bin时,类类型与数据一起存储。如果更改了类的命名空间,则格式化程序无法找到存储的类。
答案 1 :(得分:0)
如果您使用Asp.Net遇到此问题,则需要清除浏览器缓存和cookie,因为使用干净bin文件夹的解决方案不起作用(重新启动iis也不起作用)