在C#中,我是否有Func
参数表示具有此签名的方法?
XmlNode createSection(XmlDocument doc, params XmlNode[] childNodes)
我尝试使用Func<XmlDocument, params XmlNode[], XmlNode>
类型的参数,但是,哦,ReSharper / Visual Studio 2008会疯狂地用红色突出显示。
更新:好吧,谷歌搜索'c#params func'没有产生任何结果,但是'c#params delegate'把我带到了this question。按照Jon Skeet在那里的回答,看起来我可以创建一个delegate
,比如说Foo
,然后我没有为Func<XmlDocument, params XmlNode[], XmlNode>
类型的方法设置参数,而是参数为输入Foo
。
答案 0 :(得分:11)
Jon Skeet's answer致this other question让我尝试以下操作:
protected delegate XmlNode CreateSection(XmlDocument doc,
params XmlNode[] childNodes);
protected static void createOrUpdateSettingTree(XmlNode rootNode,
XmlDocument doc, CreateSection createSection) { ... }
答案 1 :(得分:5)
您不能在委托声明中拥有params
。但是,您可以使用单个数组,这可以满足您的需求:Func<XmlDocument, XmlNode[], XmlNode>
。
答案 2 :(得分:0)
我建议在这种情况下不允许'params'。