C# 使用C的序列化异常#

C# 使用C的序列化异常#,c#,serialization,deserialization,C#,Serialization,Deserialization,我是新手,正在尝试将一些信息写入文件。当我将Car类放在同一个.cs文件中时,程序运行正常,但是当我将这个类删除到项目中的另一个.cs文件中时,我得到的运行时错误是 “SerializationException未处理:ObjectManager发现无效数量的修复程序。这通常表示格式化程序中存在问题。” 以下是包含汽车类别的代码。当我将类移动到它自己的Car.cs文件时,错误开始抛出 namespace ConsoleApplication2 { class Program {

我是新手,正在尝试将一些信息写入文件。当我将Car类放在同一个.cs文件中时,程序运行正常,但是当我将这个类删除到项目中的另一个.cs文件中时,我得到的运行时错误是

“SerializationException未处理:ObjectManager发现无效数量的修复程序。这通常表示格式化程序中存在问题。”

以下是包含汽车类别的代码。当我将类移动到它自己的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;
     }
命名空间控制台应用程序2
{
班级计划
{
[可序列化()]
公车
{
公共字符串Make{get;set;}
公共字符串模型{get;set;}
公共整数年{get;set;}
公共汽车(字符串品牌、字符串型号、整数年)
{
制造=制造;
模型=模型;
年=年;
}
}
/// 
///反序列化汽车列表并将列表返回给用户
/// 
///返回反序列化的汽车列表
公共列表读取列表()
{
//创建本地列表以保存数据
List carList=新列表();
尝试
{
使用(Stream=File.Open(“data.bin”,FileMode.Open))
{
BinaryFormatter bin=新的BinaryFormatter();
//将carList指向反序列化流
carList=(List)bin.Deserialize(stream);
}
}
捕获(IOException)
{
}
返回卡利斯特;
}

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

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

请看以下内容:以下内容与此类似:有趣的是,我删除了data.bin并重新运行了该程序,效果非常好,谢谢您的帮助