Привет, это RFC выдает поддержку запроса и за добавление bool TryParse(string text, out XDocument document)
метода на XDocument
класса.
Я обыскал репозиторий, но не нашел ничего похожего, поэтому, если это обман, не стесняйтесь закрывать.
Иногда бывает так, что вам приходится работать с XML-файлами, полученными из _ненадежных_ источников, и вы должны убедиться, что файл на самом деле является правильно сформированным XML.
В настоящее время есть несколько не очень хороших способов проверить, что строка является правильно сформированным XML, который включает обработку исключений.
Ни один из предложенных способов не выглядит чистым решением довольно распространенной проблемы (по крайней мере, IMO).
Также обратите внимание, что другие классы BCL, которые предоставляют метод Parse(string source)
обычно также предоставляют метод bool TryParse(string source, out...)
поэтому добавление метода TryParse
сделает класс XDocument
несколько более совместимым с другие классы БКЛ.
добавить следующий метод
bool TryParse(string text, out XDocument document)
до классов XDocument
и XElement
Нужна ли нам четность функций с классами XmlDocument
?
На самом деле XmlDocument
предоставляет LoadXml(string xml)
поэтому мы могли бы добавить bool TryLoadXml(string xml, out XmlDocument document)
но мне действительно не нравится это имя, и поэтому, если паритет функций не является обязательным, я бы предпочел не добавление его.
Мы рассмотрели это и не до конца понимаем ценность добавления метода TryParse в этом случае. Хотя согласованность с другими типами BCL несколько интересна, в таких случаях она гораздо полезнее, потому что вы потенциально анализируете многие из них, и поэтому возникает проблема с производительностью. В этом случае производительность на самом деле не будет проблемой, потому что стоимость исключения ничтожна по сравнению со стоимостью синтаксического анализа всего XML-документа. Кроме того, с помощью методов Parse вы получите исключение XmlException для ошибок, которое дает дополнительную информацию, указывающую на ошибку синтаксического анализа, которой не было бы в случаях TryParse.
В подобных случаях API-интерфейсы Roslyn не предлагают метод TryParse для анализа файла CS либо потому, что вам обычно требуется больше контекста для любых ошибок, но даже это может быть излишним для анализа XML-документов, поэтому у нас есть золотая середина базовой информации в XmlException.
Спасибо за проблему и ее описание, но по этим причинам мы не думаем, что добавление метода TryParse к ним имеет большое значение.
@weshaggard ,
Помимо удобства, метод TryParse
позволит разработчику пропустить накладные расходы, связанные с блоками try/catch и созданием экземпляра ненужного XmlException
он/она может даже не заботиться.
Я тоже был очень удивлен, обнаружив, что такого метода не существует. :|
Лично для меня ответ @weshaggard не имеет смысла. Imo все люди, использующие .NET более полугода, полностью осведомлены об объяснениях в первой части поста @weshaggard. Отсутствие обработки и невнимательности к ошибкам в деталях, по крайней мере для меня за последние 20 лет, является ГЛАВНОЙ причиной использования варианта TryParse(), если класс его предоставляет.
Я думаю, что многие люди уже пришли сюда за последние X лет, посмотрев на сообщение stackoverflow об этом, и сказали: «О, действительно нет TryParse () в XDocument. Странно».
Но, ... что угодно.
Самый полезный комментарий
@weshaggard ,
Помимо удобства, метод
TryParse
позволит разработчику пропустить накладные расходы, связанные с блоками try/catch и созданием экземпляра ненужногоXmlException
он/она может даже не заботиться.Я тоже был очень удивлен, обнаружив, что такого метода не существует. :|