Сообщение об ошибке CA2000 StyleCop при обработке строки XML с помощью XmlReader и StringReader - PullRequest
0 голосов
/ 24 мая 2011

Я использую 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 Ответ

2 голосов
/ 24 мая 2011

Попробуйте:

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))
    {
    }

StringReader - это IDisposable, поэтому StyleCop хочет, чтобы вы избавились от него до того, как он выйдет из области видимости.using() делает это.Кроме того, пока вы там, вы можете использовать using() для XmlReader, потому что это тоже IDisposable :)

...