public async Task EvaluateAsync(CancellationToken cancellationToken) { if (_restartImmediatelySessionPreference.HasValue) { await GetRudeEditResult(_restartImmediatelySessionPreference.Value, cancellationToken); return; } var key = await _requester.GetKeyAsync( "Do you want to restart your app - Yes (y) / No (n) / Always (a) / Never (v)?", KeyPressed, cancellationToken); switch (key) { case ConsoleKey.Escape: case ConsoleKey.Y: await GetRudeEditResult(restartImmediately : true, cancellationToken); return; case ConsoleKey.N: await GetRudeEditResult(restartImmediately : false, cancellationToken); return; case ConsoleKey.A: _restartImmediatelySessionPreference = true; await GetRudeEditResult(restartImmediately : true, cancellationToken); return; case ConsoleKey.V: _restartImmediatelySessionPreference = false; await GetRudeEditResult(restartImmediately : false, cancellationToken); return; } bool KeyPressed(ConsoleKey key) { return(key is ConsoleKey.Y or ConsoleKey.N or ConsoleKey.A or ConsoleKey.V); } }