Непредвиденная исключительная ситуация от конструктора XDocument

Это хорошо работает:

XDocument xdoc = new XDocument(
   new XDeclaration("1.1", "UTF-8", "yes"),
   new XProcessingInstruction("foo", "bar"),
   new XElement("test"));

Однако, если я изменяю его для передачи "массива параметров" явно как массива:

object[] content = new object[] {
   new XDeclaration("1.1", "UTF-8", "yes"),
   new XProcessingInstruction("foo", "bar"),
   new XElement("test")
};
xdoc = new XDocument(content);

Это перестало работать с:

Система. ArgumentException: Не пробельные символы не могут быть добавлены к содержанию.

Эти два примера не точно эквивалентны? Что продолжается здесь?

17
задан Drew Noakes 16 August 2012 в 12:02
поделиться

1 ответ

Когда вы используете первый метод, вы используете перегрузку XDocument, которая сначала принимает XDeclaration, а затем параметры для содержимого. Однако, когда вы используете второй подход, вы используете перегрузку, которая принимает параметры для содержимого. XDeclaration в вашем массиве object [] проходит как контент, и вот где он взрывается.

См. Здесь: http://msdn.microsoft.com/en-us/library/system.xml. linq.xdocument.xdocument.aspx

14
ответ дан 30 November 2019 в 12:00
поделиться