using System; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace GenericHostSample { public class ProgramFullControl { public static async Task Main(string[] args) { var host = new HostBuilder() .UseServiceProviderFactory(new MyContainerFactory()) .ConfigureContainer((hostContext, container) => { }) .ConfigureAppConfiguration((hostContext, config) => { config.AddEnvironmentVariables(); config.AddJsonFile("appsettings.json", optional: true); config.AddCommandLine(args); }) .ConfigureServices((hostContext, services) => { services.AddHostedService(); services.AddHostedService(); }) .Build(); var s = host.Services; using (host) { Console.WriteLine("Starting!"); await host.StartAsync(); Console.WriteLine("Started! Press to stop."); Console.ReadLine(); Console.WriteLine("Stopping!"); await host.StopAsync(); Console.WriteLine("Stopped!"); } } } }