System.CommandLine选项Option
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.CommandLine选项Option相关的知识,希望对你有一定的参考价值。
前一篇简单看了一下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>,而不是一个值,因为这个默认值可能依赖其他资源信息计算出来,而不是一个常量。
以上是关于System.CommandLine选项Option的主要内容,如果未能解决你的问题,请参考以下文章
使用带有自定义 Main() 签名的 System.CommandLine