使用Spectre.Console创建漂亮的控制台应用程序
生活随笔
收集整理的這篇文章主要介紹了
使用Spectre.Console创建漂亮的控制台应用程序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
你是否厭倦了控制臺應(yīng)用程序默認的簡陋界面?
這時,你可以試試引用Nuget包Spectre.Console。
打印使用幫助
首先,我們可以設(shè)置控制臺應(yīng)用程序可以執(zhí)行的命令:
static?async?Task<int>?Main(string[]?args) {var?app?=?new?CommandApp();app.Configure(config?=>{config.AddCommand<DemoCommand>("demo");config.AddCommand<AnotherCommand>("another");});return?await?app.RunAsync(args); }然后,為每個命令指定參數(shù):
public?class?DemoCommandSettings?:?CommandSettings {[CommandOption("-u|--username")][Description("需要顯示的名稱")]public?string?Name?{?get;?set;?} }最后,實現(xiàn)命令:
public?class?DemoCommand?:?AsyncCommand<DemoCommandSettings> {public?override?Task<int>?ExecuteAsync(CommandContext?context,?DemoCommandSettings?settings){Console.WriteLine($@"Hello?{settings.Name}!");return?Task.FromResult(0);} }可以看到,Spectre.Console自動生成了幫助信息,指導(dǎo)用戶如何使用。
與用戶交互
我們還可以運行命令時詢問用戶,進行一定的交互輸入:
var?name?=settings.Name???AnsiConsole.Ask<string>("What's?your?[green]name[/]?"); Console.WriteLine($@"Hello?{name}!");顯示信息
當我們從用戶那里收集完信息后,可以讓用戶檢查信息,以確保所有信息輸入正確。例如,我們可以以表格格式呈現(xiàn)摘要:
do {name?=?AnsiConsole.Ask<string>("What's?your?[green]name[/]?");var?table?=?new?Table();table.AddColumn("參數(shù)");table.AddColumn(new?TableColumn("值").Centered());table.AddRow("-u",?$@"[green]{name}[/]");AnsiConsole.Write(table); }?while?(!AnsiConsole.Confirm("輸入是否正確?"));報告進度
在執(zhí)行命令時,可以顯示進度來告訴用戶工作完成的百分比:
await?AnsiConsole.Progress().StartAsync(async?ctx?=>{?var?task1?=?ctx.AddTask("執(zhí)行中......");while?(!ctx.IsFinished){//?模擬工作耗時await?Task.Delay(100);task1.Increment(1);}});結(jié)論
正如我在開始時提到的,使用Spectre.Console可以創(chuàng)建出漂亮的控制臺應(yīng)用程序,更多功能請參看官方文檔:https://spectreconsole.net/
如果你覺得這篇文章對你有所啟發(fā),請關(guān)注我的個人公眾號”My IO“
總結(jié)
以上是生活随笔為你收集整理的使用Spectre.Console创建漂亮的控制台应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理技术之分辨率与压缩
- 下一篇: 初识MASA Blazor