Ich möchte eine Methode schreiben, die etwas Arbeit und schließlich eine andere Methode mit der gleichen Signatur wie die ursprüngliche Methode zurückgibt. Die Idee besteht darin, einen Byte-Strom abhängig von dem vorherigen Byte-Wert sequentiell zu behandeln, ohne in eine Rekursion zu gehen. Durch Aufruf wie folgt:Wie deklariere ich einen Func-Delegaten, der einen Func-Delegaten des gleichen Typs zurückgibt?
MyDelegate executeMethod = handleFirstByte //What form should be MyDelegate?
foreach (Byte myByte in Bytes)
{
executeMethod = executeMethod(myByte); //does stuff on byte and returns the method to handle the following byte
}
Um die Methode übergeben möchte ich sie zu einem Func-Delegaten zuweisen. Aber ich lief in das Problem, dass diese ohne Terminierung in einer rekursiven Erklärung führt ...
Func<byte, Func<byte, <Func<byte, etc... >>>
Ich bin hier irgendwie verloren. Wie konnte ich das umgehen?
Die Signatur Die Methode ist zur Kompilierzeit jedoch nicht bekannt. Er weiß nicht, dass der Parameter ein "Byte" ist. – Servy
@Servy In diesem Fall ... Delegat RecursiveFunc RecursiveFunc (T-Eingang) ' –
ausgezeichnet - funktioniert wie ein Charme. In meinem Fall weiß ich, dass es ein Byte sein wird, aber +1 für die generische Version. – Marwie