我尝试使用XML来存储我的数据,为此,定义了:
“教室管理”类里有“教室”,并定义XML序列化方法
“教室”类里有每周7日的“日程”
“日程”类里用字符串来存放每个小时的安排
===========================================
但是在我进行反序列化时,“教室”里的“日程”数量增加了一倍。
我查看了序列化生成的XML文件,里面的“日程”数量是对的。似乎是反序列化时的问题。我想了很久,不知道原因所在,还望指点。下面是的我的代码,很简单
===========================================    [Serializable]
    public class 教室管理
    {        static BindingList<教室> 所有教室 = new BindingList<教室>();        internal static void XML序列化所有教室(string savedFileName)
        {            XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
            StreamWriter myWriter = new StreamWriter(savedFileName);
            mySerializer.Serialize(myWriter, 所有教室);
            myWriter.Close();
        }        internal static void 反XML序列化所有教室(string savedFileName)
        {
            XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
            FileStream myFileStream = new FileStream(savedFileName, FileMode.Open);
            所有教室 = (BindingList<教室>)mySerializer.Deserialize(myFileStream);
            myFileStream.Close();
        }
    }    [Serializable]
    public class 教室:IComparable<教室>
    {
        public string 编号 { get; set; }
        public string 名称 { get; set; }
        public BindingList<日程> 日程队列 { get; set; }
    }    [Serializable]
    public class 日程
    {
        public string 星期几 { get; set; }
        public string 时0 { get; set; }
        public string 时1 { get; set; }    }

解决方案 »

  1.   

    这个是我的XML序列化代码:        internal static void XML序列化所有教室(string savedFileName)        {             XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));            StreamWriter myWriter = new StreamWriter(savedFileName);            mySerializer.Serialize(myWriter, 所有教室);            myWriter.Close();        }
    变量命名用中文,是我的个人习惯,见笑了
    还请多提宝贵意见
      

  2.   

    刚才贴的代码排版有问题,重新贴        internal static void XML序列化所有教室(string savedFileName)
            {            XmlSerializer mySerializer = new XmlSerializer(typeof(BindingList<教室>));
                StreamWriter myWriter = new StreamWriter(savedFileName);
                mySerializer.Serialize(myWriter, 所有教室);
                myWriter.Close();
            }
      

  3.   

    序列化/反序列化 教室[] 集合,而不要整什么 BindingList<教室>。
      

  4.   

    你是如何调用反序列化的,会不会2次调用
    反序列化代码应该没错,你将文件写入模式设置为Create试试