【发布时间】:2010-08-10 21:12:36
【问题描述】:
我正在尝试序列化以下类:
[Serializable()]
public class BindingNode : IEnumerable<BindingNode>
{
public BindingNode()
{
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
public IEnumerator<BindingNode> GetEnumerator()
{
throw new NotImplementedException();
}
public void Add(BindingNode item)
{
throw new NotImplementedException();
}
}
这最初是一个 ICollection 而不是 IEnumerable,但我尽可能多地删除了我的代码,只保留导致错误的原因。以下是发生异常的代码:
private void button1_Click(object sender, EventArgs e)
{
BindingNode node = new BindingNode();
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
Stream stream = File.Open(saveFileDialog1.FileName, FileMode.Create);
XmlSerializer xmlFormatter = new XmlSerializer(node.GetType());
xmlFormatter.Serialize(stream, node);
stream.Close();
}
}
【问题讨论】:
-
附带说明,您不需要为 XmlSerializer 标记您的类 Serializable。
-
另外,您应该使用“使用”块来清理流,而不仅仅是 .Close。如您所见,序列化代码可能会抛出这可能会为文件留下一个打开的句柄。