Делегат C# Func с типом params

как в C#, у меня есть Func параметр, представляющий метод с этой сигнатурой?

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

Я попытался иметь параметр типа Func<XmlDocument, params XmlNode[], XmlNode> но, ох, ReSharper / Visual Studio 2008 сходят с ума, выделяя это красным цветом.

обновление: хорошо, поиск в гугле для "C# params func" не дал никаких результатов, но "делегат c# params" привел меня к этот вопрос. После ответа Джона Скита там, похоже, я мог бы создать delegate, скажи Foo, а затем вместо того, чтобы иметь параметр для моего метода типа Func<XmlDocument, params XmlNode[], XmlNode>, Я беру параметр типа Foo.

3 ответов


ответ Джона Скита to это другой вопрос привел меня попробовать следующее, что работает:

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

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

вы не можете иметь params в объявлении делегата. Однако вы можете взять один массив, который будет работать для того, что вам нужно: Func<XmlDocument, XmlNode[], XmlNode>.


Я предлагаю, что "params" в этом случае не допускается.