static async Task <int> Main ( string[] args ) { // Включаем конфигурирование в appsettings.json var config = new ConfigurationBuilder() .SetBasePath(AppContext.BaseDirectory) .AddJsonFile("appsettings.json", optional: false) .Build(); var rootCommand = new RootCommand("FullMeat") { new Option <string>("--brand", () => "Kiev") }; var parseResult = new CommandLineBuilder(rootCommand) .UseDefaults() .Build() .Parse(args); var brandTitle = parseResult.ValueForOption <string>("--brand"); var brand = new DishBrand { Title = brandTitle }; // Настраиваем хост var builder = Host.CreateDefaultBuilder(args).ConfigureServices ( services => { services.AddOptions(); // включаем логирование services.AddLogging(logging => logging.AddConsole()); // регистрируем интерфейсы services.AddTransient <IMeatDish, Cutlet>(); // регистрируем наш сервис services.AddSingleton(brand); services.AddHostedService <MeatService>(); // откуда брать настройки var section = config.GetSection("MeatOptions"); services.Configure <MeatOptions>(section); } ); using var host = builder.Build(); await host.StartAsync(); // запускаем наш сервис await host.WaitForShutdownAsync(); // ожидаем его окончания // К этому моменту всё успешно выполнено либо произошла ошибка Console.WriteLine("THAT'S ALL, FOLKS!"); return(0); }
public Task PrepareDishAsync ( DishBrand brand ) { var name = _options.Name; var weight = _options.Weight; _logger.LogInformation($"Cutlet is dish: {brand.Title} of {name}, {weight} kg"); return(Task.CompletedTask); }