Как в C# сделайте у меня есть a Func
параметр, представляющий метод с этой подписью?
XmlNode createSection(XmlDocument doc, params XmlNode[] childNodes)
Я пытался иметь параметр типа Func
но, ох, ReSharper/Visual Studio 2008 сходит с ума, выделяя это в красном.
Обновление: хорошо, поиск с помощью Google для 'c# параметрические усилители func' не привел ни к каким результатам, но 'c# делегат параметрических усилителей' привел меня к этому вопросу. Ответ следующего Jon Skeet там, это похоже, возможно, что я мог создать a delegate
, сказать Foo
, и затем вместо того, чтобы иметь параметр к моему методу типа Func
, Я беру параметр типа Foo
.
Ответ Jon Skeet на этот другой вопрос заставил меня попробовать следующее, что работает:
protected delegate XmlNode CreateSection(XmlDocument doc,
params XmlNode[] childNodes);
protected static void createOrUpdateSettingTree(XmlNode rootNode,
XmlDocument doc, CreateSection createSection) { ... }
Вы не можете иметь params
в объявлении делегата. Однако вы можете взять один массив, который подойдет для того, что вам нужно: Func
.
Я полагаю, что в этом случае использование параметра «params» запрещено.