前一篇簡單看了一下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>,而不是一個值,因為這個默認值可能依賴其他資源信息計算出來,而不是一個常量。