Я хочу реализовать метод цикла без параметров в одной строке кода вместо использования while(true) Loop();
В основном я хотел бы иметь это:
public void StartLoop_InOneLine() => LoopMethod().Loop(FuncBoolToStopLoop());
или это
public void StartLoop_InOneLine() => LoopMethod.Loop(FuncBoolToStopLoop());
Для достижения вышеизложенного мне удалось создать расширение, но оно работает, только если я преобразовал методы в делегаты.
Extension
public static class LoopExtensions
{
public static void Loop(this Action method, Func<bool> loopUntil)
{
while(loopUntil.Invoke())
method.Invoke();
}
}
Я хотел бы понять, смогу ли я достичь вышеизложенного для дальнейшей реализации этого паттерна.
Пример класса
public class Looping
{
//what I would like to do
public void StartLoop_InOneLine() => LoopMethod().Loop(FuncBoolToStopLoop());
//what I want to achieve, in practice
public void StartLoop_InPractice()
{
Action method = LoopMethod;
Func<bool> loopUntil = FuncBoolToStopLoop;
method.Loop(loopUntil);
}
private void LoopMethod(){}
private bool FuncBoolToStopLoop() => true;
}