使用c#序列化异常

本文关键字:异常 序列化 使用 | 更新日期: 2023-09-27 17:52:57

我是c#的新手,正试图将一些信息写入文件。当我在同一个。cs文件中拥有Car类时,我得到了程序正常运行,但是当我将该类删除到项目中的另一个。cs文件中时,我得到

的运行时错误。

"SerializationException未被处理:ObjectManager发现了一个无效数量的修复程序。这通常表明"格式化程序"有问题。

下面是包含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;
     }

使用c#序列化异常

第一次创建data.bin时,类类型与数据一起存储。如果您更改了类的名称空间,那么格式化程序将无法找到存储的类。

如果您使用Asp。Net和有这个问题,你需要清除浏览器缓存和cookie,因为解决方案与清洁bin文件夹不工作(重新启动iis也没有工作)