Почему мой StringReader очищается после нового XPathDocument (strReader)? - PullRequest
0 голосов
/ 29 ноября 2011

Мне любопытно, почему мой StringReader очищается после того, как я вызываю что-то вроде этого:

        XPathDocument xPathDoc;
        StringReader strReader = new StringReader(l_xmlFile.content);
        xPathDoc = new XPathDocument(strReader);

l_xmlFile.content является строкой и правильно загружается в xPathDoc, но после последней строкиэтот код strReader (а именно _s член) равен нулю, а длина равна 0. Почему это происходит?Ничего об этом не упоминается в msdn

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Это довольно распространенное поведение в .NET, объект XPathDocument становится владельцем входного объекта. И вызывает его метод Dispose () после завершения чтения. StringReader.Dispose () сбрасывает внутренние поля _s и _length.

Документация MSDN для конструктора XPathDocument (TextReader) довольно неуклюжа, но это можно интерпретировать так.

2 голосов
/ 29 ноября 2011

MSDN:

После того, как объект TextReader был использован для загрузки данных XML, курсор объекта TextReader располагается в конце данных.Объект TextReader должен быть сброшен для повторного считывания данных.

Это отвечает на него?

...