예제 #1
0
        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);
        }
예제 #2
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);
        }