当我在C#.NET项目上运行Gendarme 2.11时,以下代码会触发EnsureLocalDisposalRule:
XmlDocument myXmlDoc = this.GetXmlDoc();
foreach (XmlNode myNode in myXmlDoc.GetElementsByTagName("TAGNAME"))
{
... does something with myNode ...
}
带有消息:
不会丢弃“XmlNodeList”类型的本地(至少不是本地)。
阅读rule description后 我试图按如下方式重写它:
XmlDocument myXmlDoc = this.GetXmlDoc();
using (XmlNodeList myNodeList = myXmlDoc.GetElementsByTagName("TAGNAME"))
{
foreach (XmlNode myNode in myNodeList )
{
... does something with myNode ...
}
}
但这会产生错误:
'System.Xml.XmlNodeList':在using语句中使用的类型必须是 隐式转换为'System.IDisposable'
造成这种情况的原因是什么?这是Gendarme中的错误吗?或者我误解了规则?我的代码怎么可以改进?