public static IHostBuilder CreateHostBuilder()

in scenarios/aca-internal/bicep/sample-apps/jobs/src/aca-jobs/Program.cs [15:45]


    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
            {
                services.AddLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.AddConfiguration(hostContext.Configuration.GetSection("Logging"));
                    logging.AddConsole();
                });
                var configSection = hostContext.Configuration.GetSection("settings");
                services.Configure<ConfigurationOptions>(configSection);
                services.AddSingleton(provider =>
                    provider.GetRequiredService<IOptions<ConfigurationOptions>>().Value);
                var role = configSection.GetValue<string>("WorkerRole");
                switch (role)
                {
                    case "sender":
                        services.AddTransient<IJob, MessageSender>();
                        break;
                    case "receiver":
                        services.AddTransient<IJob, MessageReceiver>();
                        break;
                    case "processor":
                        services.AddTransient<IJob, MessageProcessor>();
                        break;
                    default:
                        throw new ArgumentException(
                            "The role argument needs to be either sender, receiver or processor");
                }             
            });