Пример #1
0
        /// <summary>
        /// 执行方法。
        /// </summary>
        /// <param name="argument">参数。</param>
        /// <returns>返回执行任务。</returns>
        public Task ExecuteAsync(CommandArgs argument)
        {
            CommandConsole.IsDebug = !argument.IsSubCommand("off");
            if (CommandConsole.IsDebug)
            {
                CommandConsole.Info(Resources.DebugCommandHandler_ExecuteAsync_DebugOn);
            }
            else
            {
                CommandConsole.Warning(Resources.DebugCommandHandler_ExecuteAsync_DebugOff);
            }

            return(Task.CompletedTask);
        }
Пример #2
0
        /// <summary>
        /// 执行方法。
        /// </summary>
        /// <param name="commandName">命令名称。</param>
        /// <param name="args">参数。</param>
        /// <returns>返回执行任务。</returns>
        public async Task ExecuteAsync(string commandName, string args)
        {
            switch (commandName)
            {
            case "exit":
            case "quit":
            {
                await CommandConsole.CloseAsync(10);

                CommandConsole.TokenSource.Cancel();
            }
            break;

            case "help":
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(Resources.CommandHandlerFactory_CommandList);
                foreach (var commandHandler in _commandHandlers.Values.OrderBy(x => x.Command))
                {
                    CommandConsole.Display(commandHandler.Command, commandHandler.Help);
                }

                CommandConsole.Display("help", Resources.CommandHandlerFactory_ExecuteAsync_HelpDescription);
                CommandConsole.Display("exit|quit", Resources.CommandHandlerFactory_ExecuteAsync_Quit);
                Console.ResetColor();
            }
            break;

            default:
                if (_commandHandlers.TryGetValue(commandName, out var handler))
                {
                    try
                    {
                        await handler.ExecuteAsync(new CommandArgs(args));
                    }
                    catch (Exception exception)
                    {
                        CommandConsole.Error(exception.Message);
                    }
                }
                else
                {
                    CommandConsole.Error(Resources.CommandHandlerFactory_ExecuteAsync_NotSupported, commandName);
                }

                break;
            }
        }