欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

使用Spectre.Console创建漂亮的控制台应用程序

发布时间:2023/12/4 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用Spectre.Console创建漂亮的控制台应用程序 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言

你是否厌倦了控制台应用程序默认的简陋界面?

这时,你可以试试引用Nuget包Spectre.Console。

打印使用帮助

首先,我们可以设置控制台应用程序可以执行的命令:

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); }

然后,为每个命令指定参数:

public class DemoCommandSettings : CommandSettings {[CommandOption("-u|--username")][Description("需要显示的名称")]public string Name { get; set; } }

最后,实现命令:

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自动生成了帮助信息,指导用户如何使用。

与用户交互

我们还可以运行命令时询问用户,进行一定的交互输入:

var name =settings.Name?? AnsiConsole.Ask<string>("What's your [green]name[/]?"); Console.WriteLine($@"Hello {name}!");

显示信息

当我们从用户那里收集完信息后,可以让用户检查信息,以确保所有信息输入正确。例如,我们可以以表格格式呈现摘要:

do {name = AnsiConsole.Ask<string>("What's your [green]name[/]?");var table = new Table();table.AddColumn("参数");table.AddColumn(new TableColumn("值").Centered());table.AddRow("-u", $@"[green]{name}[/]");AnsiConsole.Write(table); } while (!AnsiConsole.Confirm("输入是否正确?"));

报告进度

在执行命令时,可以显示进度来告诉用户工作完成的百分比:

await AnsiConsole.Progress().StartAsync(async ctx =>{ var task1 = ctx.AddTask("执行中......");while (!ctx.IsFinished){// 模拟工作耗时await Task.Delay(100);task1.Increment(1);}});

结论

正如我在开始时提到的,使用Spectre.Console可以创建出漂亮的控制台应用程序,更多功能请参看官方文档:https://spectreconsole.net/

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

总结

以上是生活随笔为你收集整理的使用Spectre.Console创建漂亮的控制台应用程序的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。