using System.CommandLine;
using System.CommandLine.Invocation;
public static void Main()
var subCmd = new Command("sub-cmd") { new Argument<string>("sub-cmd-arg") };
subCmd.Handler = CommandHandler.Create<string, string>(SubCmdHadnler);
var cmd = new Command("cmd") { new Argument<string>("cmd-arg"), subCmd };
cmd.Handler = CommandHandler.Create<string>(CmdHadnler);
new RootCommand() { cmd }.Invoke("cmd 11 sub-cmd 22");
static void SubCmdHadnler(string cmdArg, string subCmdArg)
Console.WriteLine($"subCmd = {subCmdArg}");
static void CmdHadnler(string cmdArg)
Console.WriteLine($"cmd = {cmdArg}");