using System; using System.Threading.Tasks; using CliFx.Demo.Commands; using CliFx.Demo.Domain; using Microsoft.Extensions.DependencyInjection; namespace CliFx.Demo; public static class Program { private static IServiceProvider GetServiceProvider() { // We use Microsoft.Extensions.DependencyInjection for injecting dependencies in commands var services = new ServiceCollection(); // Register services services.AddSingleton(); // Register commands services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); return services.BuildServiceProvider(); } public static async Task Main() => await new CliApplicationBuilder() .SetDescription("Demo application showcasing CliFx features.") .AddCommandsFromThisAssembly() .UseTypeActivator(GetServiceProvider().GetRequiredService) .Build() .RunAsync(); }