Я хотел бы написать метод, который выполняет некоторую работу и, наконец, возвращает другой метод с той же сигнатурой, что и исходный метод. Идея состоит в том, чтобы обрабатывать поток байтов в зависимости от предыдущего байтового значения последовательно, не вдаваясь в рекурсию. Называя это так:Как объявить делегат Func, который возвращает делегат Func того же типа?
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
}
Чтобы передать метод, я хочу назначить их делегату Func. Но я столкнулся с проблемой, что это приводит к рекурсивной декларации без прекращения ...
Func<byte, Func<byte, <Func<byte, etc... >>>
я как-то потерял здесь. Как я мог обойти это?
Подпись однако метод не знает во время компиляции. Он не знает, что параметр является байтом. – Servy
@Servy В этом случае ... 'delegate RecursiveFunc RecursiveFunc (T input)' –
отлично - работает как шарм. В моем случае я знаю, что это будет байт, но +1 для общей версии. – Marwie