Разница между XMLReader.Create () и новым XMLTextReader () - PullRequest
11 голосов
/ 12 октября 2009

Я хотел бы узнать разницу между XMLReader.Create и new XMLTextReader() для чтения XML. Почему я бы выбрал одно над другим?
Есть ли разница в производительности?

Я знаю, что XMLReader является абстрактным типом для XMLTextReader, по крайней мере, это то, что я читал ранее, но я видел, где люди предлагали использовать методы XMLReader.Create (), а не новый экземпляр XMLReader ().

Заранее спасибо ...

С уважением.

Ответы [ 3 ]

13 голосов
/ 12 октября 2009

XmlReader.Create позволяет указать XmlReaderSettings, чего не делает ни одна из перегрузок конструктора XmlTextReader.

6 голосов
/ 05 октября 2015

Microsoft ответит просто:

Хотя Microsoft .NET Framework включает класс XmlTextWriter, который является реализацией класса XmlWriter, в выпуске 2.0 рекомендуется использовать метод Create для создания новых объектов XmlWriter. Метод Create позволяет указать функции, которые должны поддерживаться в созданном объекте XmlWriter, а также в полной мере использовать новые функции, представленные в выпуске 2.0.

НО этот ответ не учитывает самое важное различие:

Если вы вызовете 'new XmlTextReader', он будет установлен в режиме 'v1compat', что в некоторых случаях приведет к очень плохому поведению потоковой передачи, что может привести к исключениям OutOfMemoryException! См. Почему мой новый XmlTextReader (поток) читает в мегабайтах много памяти, а не в потоковом режиме? , чтобы узнать больше.

РЕКОМЕНДАЦИЯ: Если вам действительно не нужно поведение .NET 1.1, то вы НИКОГДА не должны вызывать 'new XmlTextReader', вместо этого всегда вызывайте 'XmlReader.Create'.

1 голос
/ 12 октября 2009

Для общего ответа на вопрос, почему этот вид кода вообще существует, вы можете взглянуть на Factory Method Pattern . Использование фабричного метода и абстрактного класса / интерфейса поможет вам написать более общий код, не привязывая себя к конкретной реализации. Это может помочь сделать ваш код более удобным для использования преимуществ новых функций или для использования в различных ситуациях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...