You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cysharp ConsoleAppFramework如何创建三级嵌套子命令

ConsoleAppFramework 多级嵌套子命令实现方案

ConsoleAppFramework 原生支持任意层级的嵌套子命令,你描述的三级命令结构不需要做设计调整,之前三种方案失败均为用法不符合框架约定导致。


错误方案原因说明

  • 空格分隔命令名的特性写法无效:框架不会解析Command特性字符串参数中的空格作为层级分隔符,会将整个字符串识别为单级命令名,无法匹配三级路径,因此触发Command not found错误。
  • 字符串数组参数的Command重载作用是配置命令别名,而非声明多级路径。两个方法同时注册包含subcategory的别名数组,会被框架判定为命令名重复,直接抛出异常。
  • 嵌套子类无法识别,通常是因为子类未满足框架扫描要求:嵌套类必须是public访问修饰符、且继承ConsoleAppBase,才会被注册为对应层级的子命令节点。

正确实现代码

框架的多级命令是通过类嵌套映射路径层级的:根程序对应一级入口,每一层public且继承ConsoleAppBase的嵌套类对应一级子命令,类中的方法对应路径最末端的执行动作。
对应你期望的调用形式,正确代码结构如下:

// 映射一级路径: topTool
[Command("topTool")]
public class TopToolRoot : ConsoleAppBase
{
    // 映射二级路径: topTool subcategory
    [Command("subcategory")]
    public class SubCategoryLevel : ConsoleAppBase
    {
        // 映射三级路径: topTool subcategory action1
        [Command("action1")]
        public void Action1([Option("u", "arg")] string arg)
        {
            // 业务逻辑
        }

        // 映射三级路径: topTool subcategory action2
        [Command("action2")]
        public void Action2()
        {
            // 业务逻辑
        }
    }
}

注意:所有层级的命令类都必须添加public修饰符并继承ConsoleAppBase,否则框架不会扫描注册对应路径。

编译后即可直接使用你预期的命令调用:

./mycli topTool subcategory action1 -u somearg
./mycli topTool subcategory action2

如果需要更深层级的命令,只需要在对应层级的命令类中继续嵌套符合要求的ConsoleAppBase子类即可,框架本身没有命令嵌套层数限制。


内容的提问来源于stack exchange,提问作者Stephen Gilboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:30:52