2010-06-08 12 views
11

Wie, in C#, habe ich einen Func Parameter, der eine Methode mit dieser Signatur darstellt?C# Func Delegat mit Params Typ

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

Ich habe versucht, einen Parameter des Typs mit Func<XmlDocument, params XmlNode[], XmlNode> aber, ooh, ReSharper/Visual Studio 2008 verrückt Markierung gehen, dass in rot.

Update: OK, googeln für 'C# params func' produziert keine Ergebnisse, aber 'C# params delegieren' führte mich zu this question. Nach der Antwort von Jon Skeet dort, sieht es so aus, als ob ich vielleicht eine delegate, sagen wir Foo, erstellen könnte, und anstelle eines Parameters für meine Methode vom Typ Func<XmlDocument, params XmlNode[], XmlNode> nehme ich einen Parameter vom Typ Foo.

+1

was ist die Fehlermeldung? – Ando

+0

@Ando: Es wurde so viel Code in Rot hervorgehoben, nicht nur die Zeile, in der ich diesen 'Func'-Parameter hatte, sodass ich nicht einmal alle Fehler, die er gefunden hat, sagen konnte. –

Antwort

11

Jon Skeet's answer zu this other question führte mich folgendes zu versuchen, die funktioniert:

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

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

Sie können params nicht in einer Delegatendeklaration haben. Sie können jedoch ein einzelnes Array verwenden, das für das funktioniert, was Sie brauchen: Func<XmlDocument, XmlNode[], XmlNode>.