PromptPlus 是一個專注于 .NET Core 的命令行工具包,它為開發者提供了一套豐富的控件和強大的命令,用來創建專業的交互式的命令行應用程序。這個庫簡化了命令行界面(CLI)應用的開發過程,使得開發者可以更容易地添加各種輸入控件和增強用戶體驗。此庫是使用C#開發的,目標平臺支持 netstandard2.1, .NET 6 , .NET 7 和 .NET 8。
主要功能和特點:
多樣的輸入控件:
支持多種類型的用戶輸入,如文本、密碼、選擇列表、復選框、滑塊等。
提供更復雜的控件,例如日歷、表格、文件瀏覽器等。
高度定制化:
開發者可以根據需要自定義每個控件的外觀和行為,包括顏色、樣式以及驗證規則。
支持綁定數據源到控件,實現動態內容加載。
跨平臺支持:
由于是基于 .NET Core 構建,因此可以在 Windows、Linux 和 macOS 上運行。
異步操作:
允許使用異步方法處理長時間運行的任務而不阻塞用戶界面。
事件驅動編程模型:
支持通過事件監聽用戶交互,如按鍵、選擇變化等,從而做出響應。
國際化與本地化:
內置對多語言的支持,方便創建面向全球用戶的 CLI 應用。
易于集成:
可以輕松地將 PromptPlus 集成到現有的 .NET Core 項目中。
文檔和社區支持:
提供詳細的官方文檔和活躍的開源社區,有助于解決問題并獲取最佳實踐。
安裝及使用:
1、使用命令進行安裝:
Install-Package PromptPlus 或者
dotnet add package PromptPlus
2、使用VS的Nuget包管理器直接搜索添加引用
安裝完成后,按照官方文檔中的指導,在代碼里引入相應的命名空間,并根據需求創建和配置所需的控件。
部分控件示例:
Banner
條形圖
進度條
日歷
輸入及驗證
開關
表格
代碼編寫支持流式編程,比如以下代碼:
PromptPlus.Setup((cfg) =>
{
cfg.PadLeft = 2;
cfg.PadRight = 2;
cfg.Culture = new CultureInfo("en-us");
cfg.BackgroundColor = ConsoleColor.Blue;
});
PromptPlus.Join()
.SingleDash($"[yellow]Console Information[/]", DashOptions.DoubleBorder, 1 );
.WriteLine($"IsTerminal: {PromptPlus.IsTerminal}");
.WriteLine($"IsUnicodeSupported: {PromptPlus.IsUnicodeSupported}");
.WriteLine($"OutputEncoding: {PromptPlus.OutputEncoding.EncodingName}");
.WriteLine($"ColorDepth: {PromptPlus.ColorDepth}");
.WriteLine($"BackgroundColor: {PromptPlus.BackgroundColor}");
.WriteLine($"ForegroundColor: {PromptPlus.ForegroundColor}");
.WriteLine($"SupportsAnsi: {PromptPlus.SupportsAnsi}");
.WriteLine($"Buffers(Width/Height): {PromptPlus.BufferWidth}/{PromptPlus.BufferHeight}");
.WriteLine($"PadScreen(Left/Right): {PromptPlus.PadLeft}/{PromptPlus.PadRight}\n");
PromptPlus
.KeyPress()
.Config(cfg =>
{
cfg.HideAfterFinish(true)
.ShowTooltip(false)
.ApplyStyle(StyleControls.Tooltips,Style.Plain.Foreground(Color.Grey100));
})
.Spinner(SpinnersType.Balloon)
.Run();
運行效果如下:
PromptPlus支持4/8/24位顏色,在代碼中可以使用以下方式編寫:
直接指定顏色
PromptPlus.WriteLine("[RGB(255,0,0) ON WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[RGB(255,0,0):WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[#ff0000 ON WHITE]Test [YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[RED ON WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[RED:WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
通過Style指定
PromptPlus.WriteLine("Test", new Style(Color.White, Color.Red, Overflow.None));
PromptPlus.WriteLine("Test", new Style(new Color(255, 255, 255), Color.Red, Overflow.None));
PromptPlus.WriteLine("Test", new Style(Color.FromConsoleColor(ConsoleColor.White), Color.Red, Overflow.None));
PromptPlus.WriteLine("Test", new Style(Color.FromInt32(255), Color.Red, Overflow.None));
在控件上指定
PromptPlus
.Input("Input [blue]sample2[/]", "with [yellow]description[/]")
.Run();
private class MylCass
{
[Required(ErrorMessage = "{0} is required!")]
[MinLength(3, ErrorMessage = "Min. Length = 3.")]
[MaxLength(5, ErrorMessage = "Max. Length = 5.")]
[Display(Prompt ="My Input")]
public string MyInput { get; set; }
}
以及
PromptPlus
.Input("Input sample2", "import validator from decorate")
.Default(inst.Text)
.AddValidators(PromptValidators.ImportValidators(inst,x => x!.Text!))
.Run();
PromptPlus的開源地址為:https://github.com/FRACerqueira/PromptPlus
官方文檔地址:https://fracerqueira.github.io/PromptPlus?
如果無法訪問GitHub,可以查看以下文章
閱讀原文:原文鏈接
該文章在 2025/1/22 17:10:37 編輯過