Pytanie Delegat C # Func z typem params


Jak, w języku C #, mam Func parametr reprezentujący metodę z tym podpisem?

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

Próbowałem mieć parametr typu Func<XmlDocument, params XmlNode[], XmlNode> ale, ooh, ReSharper / Visual Studio 2008 szaleją podkreślając to na czerwono.

Aktualizacja:  OK, Google dla "c # params func" nie dało żadnych wyników, ale "delegat c # params" zaprowadził mnie do to pytanie. Biorąc pod uwagę odpowiedź Jona Skeeta, wygląda na to, że mógłbym stworzyć delegate, mówić Foo, a następnie zamiast mieć parametr do mojej metody typu Func<XmlDocument, params XmlNode[], XmlNode>, Biorę parametr typu Foo.


11
2018-06-08 13:48


pochodzenie


jaki jest komunikat o błędzie? - Ando
@Ando: podkreślało to tyle kodu na czerwono, a nie tylko linię, na której ją miałem Func parametr, że nie mogłem ci powiedzieć wszystkich znalezionych błędów. - Sarah Vessels


Odpowiedzi:


Odpowiedź Jona Skeeta do to inne pytanie poprowadził mnie do wypróbowania następujących rzeczy, które działają:

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

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

11
2018-06-08 14:01





Nie możesz mieć params w deklaracji delegata. Możesz jednak wziąć pojedynczą tablicę, która będzie działała zgodnie z potrzebami: Func<XmlDocument, XmlNode[], XmlNode>.


5
2018-06-08 13:54





Sugeruję, że "params" nie są dozwolone w tym przypadku.


0
2018-06-08 13:54