前一篇简单看了一下CommandLine命令的使用,其实在一个命令行工具中,还有一个重要的点,那就是选项——Option,选项是为命提供参数,就好像C#中方法,Command就像方法,Option就像方法的参数,说到参数就有参数类型,形参(形式参数名称),同理,CommandLine也有,看一个带Option的例子:
//创建根命令
var rootCommand = new RootCommand("这是一个命令行工具:旦猫");
rootCommand.SetHandler(() =>
{Console.WriteLine("欢迎使用《旦猫》");
});
//创建子命令 show
var showCommand = new Command("show", "显示一些信息");
//创建子命令选项 times 别名 t
var 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>,而不是一个值,因为这个默认值可能依赖其他资源信息计算出来,而不是一个常量。