跳到主要内容
版本:4.0

控制台行为

定义

命名空间:
TouchSocket.Core
安装:
dotnet add package TouchSocket.Core

一、说明

ConsoleAction 是一个简洁高效的控制台命令处理器,用于快速构建交互式控制台应用程序。它提供了命令注册、命令执行、帮助信息展示等功能,让控制台程序的开发变得简单优雅。

1.1 核心特性

  • 命令别名支持:一个命令可以设置多个别名(如 start|s|run
  • 同步/异步命令:同时支持同步 Action 和异步 Func<Task> 命令
  • 异常处理:统一的异常处理机制
  • 帮助信息:自动生成和展示所有注册命令的帮助信息
  • Banner 展示:内置精美的 ASCII 艺术 Banner
  • 命令行循环:提供开箱即用的命令行交互循环

二、基础使用

2.1 创建控制台命令器

创建 ConsoleAction 实例时,可以指定帮助命令的别名,默认为 "h|help|?"

🔄 正在加载代码...

2.2 异常处理

通过订阅 OnException 事件来处理命令执行过程中的异常:

🔄 正在加载代码...

三、添加命令

3.1 添加同步命令

可以添加返回 void 的同步命令,支持使用 | 分隔多个命令别名:

🔄 正在加载代码...

3.2 添加异步命令

支持添加返回 Task 的异步命令:

🔄 正在加载代码...

四、运行命令

4.1 手动执行命令

可以使用 RunAsync 方法手动执行指定的命令:

// 执行命令,返回值表示命令是否存在
var success = await consoleAction.RunAsync("start");
if (!success)
{
Console.WriteLine("命令不存在");
}

4.2 命令行交互循环

使用 RunCommandLineAsync 方法启动命令行交互循环,用户可以持续输入命令:

🔄 正在加载代码...

五、高级功能

5.1 获取所有命令信息

可以通过 AllActionInfos 属性获取所有已注册的命令信息:

🔄 正在加载代码...

5.2 显示帮助信息

调用 ShowAll() 方法可以显示所有注册的命令及其描述:

consoleAction.ShowAll();

该方法会自动格式化输出命令列表,包括命令别名和描述信息。

六、效果展示

七、注意事项

  1. 命令别名区分大小写:命令匹配时会自动转换为小写,因此命令别名不区分大小写
  2. 异常处理:建议始终订阅 OnException 事件以处理命令执行中的异常
  3. 命令冲突:如果多个命令使用相同的别名,后注册的命令会覆盖先注册的命令
  4. Banner 展示:在构造函数中会自动显示 TouchSocket 的 Banner,这是内置行为