Esto funciona bien:excepción inesperada de XDocument constructor
XDocument xdoc = new XDocument(
new XDeclaration("1.1", "UTF-8", "yes"),
new XProcessingInstruction("foo", "bar"),
new XElement("test"));
Sin embargo, si lo cambio a pasar la "matriz params" explícitamente como una matriz:
object[] content = new object[] {
new XDeclaration("1.1", "UTF-8", "yes"),
new XProcessingInstruction("foo", "bar"),
new XElement("test")
};
xdoc = new XDocument(content);
falla con:
System.ArgumentException: no se pueden agregar caracteres de espacio en blanco al contenido.
¿No son estos dos ejemplos exactamente equivalentes? ¿Que está pasando aqui?
veo; No me di cuenta de que estaba llamando diferentes sobrecargas. Parece un poco desafortunado que el 'XDocument (objeto [])' acepte todo tipo de objetos, pero por alguna razón excluye XDeclaration. –
Me pregunto si los diseñadores de idiomas cambiarían la implementación de argumentos 'params' ahora si se les diese la oportunidad. Esta es una trampa no obvia que se evitaría si se pudiera indicar explícitamente que está pasando varargs al sitio de llamadas de alguna manera. –