对于XmlNodeList,EnsureLocalDisposalRule

时间:2015-04-29 10:05:01

标签: c# using-statement gendarme

当我在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中的错误吗?或者我误解了规则?我的代码怎么可以改进?

0 个答案:

没有答案