C# Cocona
最后修改时间:2024 年 1 月 18 日
在本文中,我们将使用 Cocona 库在 C# 中创建简单的控制台应用程序。
Cocona 是一个库,它可以轻松快速地在 .NET 上构建控制台应用程序。 该库模仿 ASP.NET Core Minimal API。 它具有类似于标准 Unix 工具的语义。
该库有两个版本:Cocona 和 Cocona.Light。 Light 版本具有更少的开销和功能。 它没有日志记录、DI 和配置。
C# Cocona 简单示例
我们有一个非常简单的控制台应用程序。
using Cocona;
CoconaLiteApp.Run((string name) =>
{
Console.WriteLine($"Hello {name}");
});
如果我们的应用程序只有一个命令,我们可以直接使用 CoconaLiteApp.Run 方法。 Cocona 从方法参数(name)创建一个命令行选项。
$ dotnet run --name Peter Hello Peter
我们将一个值传递给 --name 选项。 程序用问候消息响应。
$ dotnet run -- --help
Usage: FirstEx [--name <String>] [--help] [--version]
FirstEx
Options:
--name <String> (Required)
-h, --help Show help message
--version Show version
Cocona 自动创建应用程序帮助。 由于 dotnet 命令也具有 --help 选项,因此我们必须在我们的选项前加上 --。
前面的代码是以下代码的缩短版本
using Cocona;
var builder = CoconaLiteApp.CreateBuilder();
var app = builder.Build();
app.AddCommand((string name) =>
{
Console.WriteLine($"Hello {name}");
});
app.Run();
在此代码示例中,我们使用构建器构建 Cocona 应用程序,并使用 AddCommand 添加新命令。
app.Run();
Run 方法启动启用 Cocona 的应用程序。
基于类的示例
在基于类的应用程序中,公共方法会自动转换为命令。
using Cocona;
class Program
{
static void Main(string[] args)
{
CoconaLiteApp.Run<Program>(args);
}
public void Message(string name, int age)
{
Console.WriteLine($"{name} is {age} years old");
}
}
该程序接受两个选项:--name 和 --age。
$ dotnet run --name John --age 34 John is 34 years old
多个命名命令
我们可以添加多个命名命令。
using Cocona;
var app = CoconaLiteApp.Create();
app.AddCommand("add", () => { Console.WriteLine("add command"); });
app.AddCommand("remove", () => { Console.WriteLine("remove command");});
app.AddCommand("show", () => { Console.WriteLine("show command"); });
app.Run();
该示例添加了三个命名命令。
app.AddCommand("add", () => { Console.WriteLine("add command"); });
第一个参数是命令的名称。 第二个参数是指向命令主体的委托。
标志
可以使用 Option 属性添加标志。
using Cocona;
var app = CoconaLiteApp.Create();
app.AddCommand(([Option('f')] bool force, [Option('r')] bool recursive) =>
{
Console.WriteLine(force);
Console.WriteLine(recursive);
});
app.Run();
该示例添加了两个标志:-f 和 -r。
$ dotnet run -- -f -r True True $ dotnet run -- -fr True True
我们可以使用 -f -r 和 -fr 这两种变体。
一个值的数组
可以将值的数组插入到数组中。 此选项在 light Cocona 应用程序中不受支持。
using Cocona;
var app = CoconaApp.CreateBuilder().Build();
app.AddCommand(([Option('N')]string[] names) =>
{
foreach (var name in names)
{
Console.WriteLine(name);
}
});
app.Run();
该程序接受 -N 选项的一个或多个值。
app.AddCommand(([Option('N')]string[] names) =>
字符串数组使用 [Option('N')] 属性进行修饰。
$ dotnet run -NPaul -NJane -NJohn -NLucy Paul Jane John Lucy
来源
在本文中,我们已经使用 Cocona 在 C# 中创建了简单的控制台应用程序。
作者
列出所有 C# 教程。