private static IHostBuilder CreateHostBuilder(string[] args) { return(Host.CreateDefaultBuilder(args) .ConfigureServices(services => { services.AddLogging(config => config.AddConsole()); services.AddTransient <Program>(); services.AddTransient <ServiceResolver>(); services.AddTransient <ServiceA>(); services.AddTransient <ServiceB>(); services.AddTransient <Func <string, IService> >(provider => key => { switch (key) { case "A": return provider.GetService <ServiceA>(); case "B": return provider.GetService <ServiceB>(); default: return provider.GetService <ServiceA>(); } }); }) .ConfigureAppConfiguration(config => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddJsonFile("Appsettings.json", true, true); })); }