Вы пропустили критическую часть:
XmlReader reader = XmlTextReader.Create(sreader, readerSettings);
Вы вызываете метод, который возвращает XmlTextReader
, но тип вашей переменной XmlReader
.
Приведение происходит во время выполнения, поэтому значение reader
может быть приведено к IXmlLineInfo
, поскольку XmlTextReader
поддерживает этот интерфейс, даже если XmlReader
нет.
Восстановление при перегрузке происходит во время компиляции, поэтому, поскольку XmlReader
не поддерживает IXmlLineInfo
, его нельзя сопоставить с сигнатурой.
Вы можете исправить это, написав:
XmlTextReader reader = (XmlTextReader)XmlTextReader.Create(sreader, readerSettings);
Обратите внимание, что вам нужен приведение, потому что тип возвращаемого значения Create
равен XmlReader
, даже если он действительно возвращает XmlTextReader
.