2010-06-08 19 views
11

¿Cómo, en C#, ¿tengo un parámetro que representa un método Func con esta firma?delegado C# Func con el tipo params

XmlNode createSection(XmlDocument doc, params XmlNode[] childNodes) 

he intentado tener un parámetro de tipo Func<XmlDocument, params XmlNode[], XmlNode> pero, ooh, ReSharper/Visual Studio 2008 ir loco resaltado que, en rojo.

Actualización: está bien, Google para 'C# params func' no dieron ningún resultado, pero 'C# params delegado' me llevaron a this question. A raíz de la respuesta de Jon Skeet allí, parece que tal vez podría crear un delegate, Foo decir, y entonces, en lugar de tener un parámetro a mi método de tipo Func<XmlDocument, params XmlNode[], XmlNode>, tomo un parámetro de tipo Foo.

+1

¿cuál es el mensaje de error? – Ando

+0

@Ando: estaban denunciando tanto el código en rojo, no sólo la línea donde tuve ese parámetro 'Func', que ni siquiera podía decirle todos los errores que se ha encontrado. –

Respuesta

11

Jon Skeet's answer a this other question me llevó a tratar lo siguiente, que funciona:

protected delegate XmlNode CreateSection(XmlDocument doc, 
    params XmlNode[] childNodes); 

protected static void createOrUpdateSettingTree(XmlNode rootNode, 
    XmlDocument doc, CreateSection createSection) { ... } 
5

No se puede tener params en una declaración de delegado. Sin embargo, puede tomar una sola matriz, que funcionaría para lo que necesita: Func<XmlDocument, XmlNode[], XmlNode>.

Cuestiones relacionadas