Делегат С# 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
.
Ответы
Ответ 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' в этом случае не допускать.