【发布时间】:2013-04-04 13:53:50
【问题描述】:
我正在用XmlWriter 编写xml。我的代码有很多这样的部分:
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
问题是ThirdPartyLibrary.Serialise 方法不可靠。它可能会发生(取决于变量results)它不会关闭它打开的所有标签。结果,我的 WriteEndElement 行被歪曲了,消耗关闭库的悬挂标签,而不是写</payload>。
因此,我想对 WriteEndElement 进行检查调用,以检查元素名称,并抛出异常,除非光标位于预期元素处。
xml.WriteEndElement("payload");
您可以将其视为XmlReader.ReadStartElement(name),除非光标位于文档中的预期位置,否则会抛出异常。
我怎样才能做到这一点?
编辑:此扩展方法的第二个用例是使我自己的代码更具可读性和可靠性。
【问题讨论】:
-
您能否将新的
XmlWriter发送到ThirdPartyLibrary.Serialise并在将其添加到您的xml对象之前对其进行明确检查? -
您能在将
results传递给Serialise之前以某种方式验证它吗? (即当您传入某些类型的结果时,您能否重现序列化方法的中断) -
@KeyboardP — 第三方库实际上是用户提供的实现接口的插件,因此不可信。
标签: c# .net extension-methods xmlwriter