示例#1
0
        /// <summary>
        /// Запустить контроллер.
        /// </summary>
        /// <param name="args">Аргументы командной строки.</param>
        public void Run(string[] args)
        {
            var commandCodes
                = new Queue <string>(Array.IndexOf(args, "-CommandCodes") is var index && index >= 0
                    ? args.ElementAtOrDefault(index + 1)?.Split(',') ?? Enumerable.Empty <string>()
                    : Enumerable.Empty <string>());

            while (true)
            {
                var commands = GetCommands();
                PrintAvailableCommands(commands);
                Console.Write(">");

                var commandCode = commandCodes.Any()
                    ? commandCodes.Dequeue()
                    : UserInput.ReadLine();

                if (commands.TryGetValue(commandCode, out var command))
                {
                    var commandAction = command.Item1;
                    if (commandAction == null)
                    {
                        UserInput.Information("Выход");
                        return;
                    }

                    try
                    {
                        commandAction();
                        var commanTitle = command.Item2;
                        UserInput.Success($"Команда \"{commanTitle}\" выполнена");
                    }
                    catch (InputCanceledException)
                    {
                        UserInput.Warning("Команда прервана");
                    }
                    catch (Exception ex)
                    {
                        var message = "При выполнении команды произошла неожиданная ошибка";
                        LogError(message, ex);

                        UserInput.Error(message);
                        UserInput.Error(ex.ToString());
                    }
                }
                else
                {
                    UserInput.Error($"Неправильно указано имя команды \"{commandCode}\"");
                }
            }
        }
示例#2
0
        /// <summary>
        /// Запустить контроллер.
        /// </summary>
        public void Run()
        {
            while (true)
            {
                var commands = GetCommands();
                PrintAvailableCommands(commands);
                Console.Write(">");

                var commandName = UserInput.ReadLine();
                if (commands.TryGetValue(commandName, out var command))
                {
                    var commandAction = command.Item1;
                    if (commandAction == null)
                    {
                        UserInput.Information("Выход");
                        return;
                    }

                    try
                    {
                        commandAction();
                        var commanTitle = command.Item2;
                        UserInput.Success($"Команда \"{commanTitle}\" выполнена");
                    }
                    catch (InputCanceledException)
                    {
                        UserInput.Warning("Команда прервана");
                    }
                    catch (Exception ex)
                    {
                        var message = "При выполнении команды произошла неожиданная ошибка";
                        LogError(message, ex);

                        UserInput.Error(message);
                        UserInput.Error(ex.ToString());
                    }
                }
                else
                {
                    UserInput.Error($"Неправильно указано имя команды \"{commandName}\"");
                }
            }
        }