使用XmlReader和StringReader处理XML字符串时出现CA2000 StyleCop错误消息

时间:2011-05-24 14:04:40

标签: c# xml visual-studio-2010 stylecop

我使用StringReader和XmlReader来处理具有XML代码的字符串。

private static string GetData(string jobResultXml, string pipeName)
{
    StringBuilder result = new StringBuilder();
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ConformanceLevel = ConformanceLevel.Fragment;

    XmlReader reader = XmlReader.Create(new StringReader(jobResultXml), settings);

它编译/构建正常,但是当我运行StyleCop时,我收到此错误消息。

Error   6   CA2000 : Microsoft.Reliability : In 
method 'ModelsimCommunicator.GetPipeData(string, string)', call System.IDisposable.Dispose 
on object 'new StringReader(jobResultXml)' before all references to it are out of scope.

避免此StyleCop错误消息需要什么?

1 个答案:

答案 0 :(得分:2)

尝试:

private static string GetData(string jobResultXml, string pipeName)
{
    StringBuilder result = new StringBuilder();
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ConformanceLevel = ConformanceLevel.Fragment;

    using (StringReader stringReader = new StringReader(jobResultXml))
    using (XmlReader xmlReader = XmlReader.Create(stringReader, settings))
    {
    }

StringReaderIDisposable所以StyleCop要求你在它超出范围之前将其处理掉。 using()就是这么做的。此外,当你在那里时,你也可以using()使用XmlReader,因为那也是IDisposable :)