Поведение XNodeReader.GetAttribute для недопустимого индекса
XNodeReader
является внутренним классом, но он доступен через класс XmlReader при вызове XNode.CreateReader. Все реализации XmlReader, кроме XNodeReader
, выдают исключение ArgumentOutOfRangeException для недопустимого индекса в методе GetAttribute(Int32). С этим изменением XNodeReader.GetAttribute(int)
теперь также выдает исключение ArgumentOutOfRangeException для недопустимого индекса.
Старое поведение
Метод XNodeReader.GetAttribute(int)
возвращал null
, если индекс был недопустимым.
Новое поведение
Метод XNodeReader.GetAttribute(int)
возвращает ArgumentOutOfRangeException, если индекс недопустим.
Представленные версии
.NET 6
Тип критического изменения
Это изменение может повлиять на совместимость исходного кода.
Причина изменения
Метод XmlReader.GetAttribute(int)
хорошо описан в документации, но поведение класса XNodeReader
отличалось от задокументированного. Его поведение для недопустимых индексов также не согласовывалось с другими реализациями XmlReader.
Рекомендуемое действие
Чтобы избежать проблем с недопустимым индексом, сделайте следующее:
- Вызовите XmlReader.AttributeCount, чтобы получить количество атрибутов текущего узла.
- Затем передайте значение диапазона
0..XmlReader.AttributeCount-1
в XmlReader.GetAttribute(Int32).