Поделиться через


Поведение 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).

Затронутые API