XML 反序列化,内部对象数量增加1倍,是何缘由?
我尝试使用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; }
}
你如何进行实列化操作的,把代码贴全吧 --------------------编程问答-------------------- 这个是我的XML序列化代码:
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<教室>));
StreamWriter myWriter = new StreamWriter(savedFileName);
mySerializer.Serialize(myWriter, 所有教室);
myWriter.Close();
}
过年了,没人解决问题啊 --------------------编程问答-------------------- 序列化/反序列化 教室[] 集合,而不要整什么 BindingList<教室>。 --------------------编程问答-------------------- 你是如何调用反序列化的,会不会2次调用
反序列化代码应该没错,你将文件写入模式设置为Create试试
补充:.NET技术 , C#