System.CommandLine选项Option

前一篇简单看了一下CommandLine命令的使用,其实在一个命令行工具中,还有一个重要的点,那就是选项——Option,选项是为命提供参数,就好像C#中方法,Command就像方法,Option就像方法的参数,说到参数就有参数类型,形参(形式参数名称),同理,CommandLine也有,看一个带Option的例子:.

//创建根命令var rootCommand = new RootCommand("这是一个命令行工具:旦猫");rootCommand.SetHandler(() =>{    Console.WriteLine("欢迎使用《旦猫》");});//创建子命令 showvar showCommand = new Command("show", "显示一些信息");//创建子命令选项 times 别名 tvar timesOption = new Option<int>(name: "--times", description: "显示的次数", getDefaultValue: () => 1){    IsHidden = true,};timesOption.AddAlias("-t");//添加选项到show命令中showCommand.AddOption(timesOption);//设置命令show执行的动作,这是带上times参数,类型为整型showCommand.SetHandler((int times) =>{    for (var i = 0; i < times; i++)    {        Console.WriteLine($"这是《旦猫》的show命令,显示次数={i}");    }}, timesOption);//添加命令show到 根命令中rootCommand.Add(showCommand);await rootCommand.InvokeAsync(args);

选项可以添加别,添加描述,设置默认值 ,还设置是否可以隐藏,或是必填,选项会在命令的执行方法SetHandler接收。

运行结果,-t 5,循环5次;如果选项参数的类型不对,会有提示;不输入选项参数,默认直为1,这里很友好的提供了一个Func<int>,而不是一个值,因为这个默认值可能依赖其他资源信息计算出来,而不是一个常量。

System.CommandLine选项Option