Quantcast
Channel: ひでぼ~blog
Viewing all articles
Browse latest Browse all 40

ConsoleAppFramework v5を試す

$
0
0

ConsoleAppFramework v5がめちゃくちゃ良いらしいという噂を聞いたので試してみました。

github.com

実行環境

シンプル構成で実行してみる

一番シンプルな構成で実行してみます。

using ConsoleAppFramework;

ConsoleApp.Run(args, (string name) => Console.WriteLine($"Hello {name}"));
PS C:\Projects\ConsoleAppFrameworkV5Sample\ConsoleAppFrameworkV5Sample> dotnet run --name Sum
Hello Sum

コマンドを複数登録して実行してみる

コマンドを複数登録してみました。

using ConsoleAppFramework;

var app = ConsoleApp.Create();

// コマンド名無し
app.Add("", (string msg) => Console.WriteLine(msg));

// コマンド名有り
app.Add("sum", (int[] numbers) => Console.WriteLine(numbers.Sum()));
app.Add("avg", (int[] numbers) => Console.WriteLine(numbers.Average()));

app.Run(args);

コレクションをカンマ区切りで渡せるのが地味に良いですね。

PS C:\Projects\ConsoleAppFrameworkV5Sample\ConsoleAppFrameworkV5Sample> dotnet run --msg hello
hello
PS C:\Projects\ConsoleAppFrameworkV5Sample\ConsoleAppFrameworkV5Sample> dotnet run sum --numbers 1,2,3,4,5
15
PS C:\Projects\ConsoleAppFrameworkV5Sample\ConsoleAppFrameworkV5Sample> dotnet run avg --numbers 1,2,3,4,5
3

DI, appsettings.jsonを使ってみる

appsettings.jsonから設定を取得してDIしてみます。

using ConsoleAppFramework;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;

var configuration =new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json")
    .Build();

var services =new ServiceCollection();
services.Configure<SampleSettings>(configuration.GetSection(nameof(SampleSettings)));

usingvar serviceProvider = services.BuildServiceProvider();
ConsoleApp.ServiceProvider = serviceProvider;

var app = ConsoleApp.Create();

// SampleSettingsを表示するコマンド
app.Add("settings", ([FromServices] IOptions<SampleSettings> options) => Console.WriteLine(options.Value));
app.Run(args);

public record SampleSettings
{
    publicstring Message { get; init; } ="";
    public DateOnly Date { get; init; }
}
PS C:\Projects\ConsoleAppFrameworkV5Sample\ConsoleAppFrameworkV5Sample> dotnet run settings
SampleSettings { Message = Hello ConsoleAppFramework!, Date = 2024/06/30 }

いろいろ試してみましたが全体的にASP.NET CoreのMinimalAPIみたいな書き心地でシンプルにも書けるし従来のクラスベースの書き方もできるという感じで良いなと思いました。

参考

github.com


Viewing all articles
Browse latest Browse all 40

Trending Articles