Подтвердить что ты не робот

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

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

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

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

Обновление: в порядке, Googling для 'С# params func' не дал никаких результатов, но 'С# params delegate' привел меня к этому вопросу, После ответа Jon Skeet, похоже, я мог бы создать delegate, скажем Foo, а затем вместо того, чтобы иметь параметр для моего метода типа Func<XmlDocument, params XmlNode[], XmlNode>, я беру параметр типа Foo.

4b9b3361

Ответ 1

ответ Jon Skeet в этот другой вопрос заставил меня попробовать следующее, которое работает:

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

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

Ответ 2

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

Ответ 3

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