使用 C# 的序列化异常

Serialization exception using C#

我是 C# 的新手,正在尝试将一些信息写入文件。当我在同一个 .cs 文件中有 Car class 时,我正确地得到了程序 运行,但是当我将这个 class 删除到项目中的另一个 .cs 文件中时,我得到了运行时

的错误

"SerializationException was unhandled: The ObjectManager found an invalid number of fixups. This usually indicates a problem in the Formatter".

下面是包含汽车 class 的代码。当我将 class 移动到它自己的 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;
     }

首次创建 data.bin 时,class 类型与数据一起存储。如果您更改 class 的命名空间,则格式化程序无法找到存储的 class。

如果您使用 Asp.Net 并遇到该问题,您需要清除浏览器缓存和 cookie,因为清理 bin 文件夹的解决方案不起作用(重新启动 iis 也不起作用)