private void CreateServiceProvider() { var services = new ServiceCollection(); services.AddSingleton(_hostingEnvironment); services.AddSingleton(_hostBuilderContext); services.AddSingleton(_appConfiguration); services.AddSingleton <IApplicationLifetime, ApplicationLifetime>(); services.AddSingleton <IHostLifetime, ConsoleLifetime>(); services.AddSingleton <IHost, Internal.Host>(); services.AddOptions(); services.AddLogging(); foreach (var configureServicesAction in _configureServicesActions) { configureServicesAction(_hostBuilderContext, services); } var containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (var containerAction in _configureContainerActions) { containerAction.ConfigureContainer(_hostBuilderContext, containerBuilder); } _appServices = _serviceProviderFactory.CreateServiceProvider(containerBuilder); if (_appServices == null) { throw new InvalidOperationException($"The IServiceProviderFactory returned a null IServiceProvider."); } }
private void InitializeServiceProvider() { var services = new ServiceCollection(); PopulateServiceCollection( services, _hostBuilderContext !, _hostingEnvironment !, _defaultProvider !, _appConfiguration !, () => _appServices !); foreach (Action <HostBuilderContext, IServiceCollection> configureServicesAction in _configureServicesActions) { configureServicesAction(_hostBuilderContext !, services); } object containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (IConfigureContainerAdapter containerAction in _configureContainerActions) { containerAction.ConfigureContainer(_hostBuilderContext !, containerBuilder); } _appServices = _serviceProviderFactory.CreateServiceProvider(containerBuilder); }
private void CreateServiceProvider() { var services = new ServiceCollection(); #pragma warning disable CS0618 // Type or member is obsolete services.AddSingleton <IHostingEnvironment>(_hostingEnvironment); #pragma warning restore CS0618 // Type or member is obsolete services.AddSingleton <IHostEnvironment>(_hostingEnvironment); services.AddSingleton(_hostBuilderContext); // register configuration as factory to make it dispose with the service provider services.AddSingleton(_ => _appConfiguration); #pragma warning disable CS0618 // Type or member is obsolete services.AddSingleton <IApplicationLifetime>(s => (IApplicationLifetime)s.GetService <IHostApplicationLifetime>()); #pragma warning restore CS0618 // Type or member is obsolete services.AddSingleton <IHostApplicationLifetime, ApplicationLifetime>(); AddLifetime(services); services.AddSingleton <IHost>(_ => { return(new Internal.Host(_appServices, _hostingEnvironment, _defaultProvider, _appServices.GetRequiredService <IHostApplicationLifetime>(), _appServices.GetRequiredService <ILogger <Internal.Host> >(), _appServices.GetRequiredService <IHostLifetime>(), _appServices.GetRequiredService <IOptions <HostOptions> >())); }); services.AddOptions().Configure <HostOptions>(options => { options.Initialize(_hostConfiguration); }); services.AddLogging(); foreach (Action <HostBuilderContext, IServiceCollection> configureServicesAction in _configureServicesActions) { configureServicesAction(_hostBuilderContext, services); } object containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (IConfigureContainerAdapter containerAction in _configureContainerActions) { containerAction.ConfigureContainer(_hostBuilderContext, containerBuilder); } _appServices = _serviceProviderFactory.CreateServiceProvider(containerBuilder); if (_appServices == null) { throw new InvalidOperationException(SR.NullIServiceProvider); } // resolve configuration explicitly once to mark it as resolved within the // service provider, ensuring it will be properly disposed with the provider _ = _appServices.GetService <IConfiguration>(); }
IServiceProvider ConfigureContainerAndGetProvider(IServiceCollection services) { object containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (IConfigureContainerAdapter containerAction in _configureContainerActions) { if (_hostBuilderContext != null) { containerAction.ConfigureContainer(_hostBuilderContext, containerBuilder); } } return(_serviceProviderFactory.CreateServiceProvider(containerBuilder)); }
IServiceProvider ConfigureContainerAndGetProvider(IServiceCollection services) { if (_hostBuilderContext == null) { throw new InvalidOperationException($"The HostBuilderContext was not set."); } object containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (IConfigureContainerAdapter containerAction in _configureContainerActions) { containerAction.ConfigureContainer(_hostBuilderContext, containerBuilder); } return(_serviceProviderFactory.CreateServiceProvider(containerBuilder)); }
private void CreateServiceProvider() { var services = new ServiceCollection(); #pragma warning disable CS0618 // Type or member is obsolete services.AddSingleton <IHostingEnvironment>(_hostingEnvironment); #pragma warning restore CS0618 // Type or member is obsolete services.AddSingleton <IHostEnvironment>(_hostingEnvironment); services.AddSingleton(_hostBuilderContext); // register configuration as factory to make it dispose with the service provider services.AddSingleton(_ => _appConfiguration); #pragma warning disable CS0618 // Type or member is obsolete services.AddSingleton <IApplicationLifetime>(s => (IApplicationLifetime)s.GetService <IHostApplicationLifetime>()); #pragma warning restore CS0618 // Type or member is obsolete services.AddSingleton <IHostApplicationLifetime, ApplicationLifetime>(); services.AddSingleton <IHostLifetime, ConsoleLifetime>(); services.AddSingleton <IHost, Internal.Host>(); services.AddOptions(); services.AddLogging(); foreach (var configureServicesAction in _configureServicesActions) { configureServicesAction(_hostBuilderContext, services); } var containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (var containerAction in _configureContainerActions) { containerAction.ConfigureContainer(_hostBuilderContext, containerBuilder); } _appServices = _serviceProviderFactory.CreateServiceProvider(containerBuilder); if (_appServices == null) { throw new InvalidOperationException($"The IServiceProviderFactory returned a null IServiceProvider."); } // resolve configuration explicitly once to mark it as resolved within the // service provider, ensuring it will be properly disposed with the provider _ = _appServices.GetService <IConfiguration>(); }
private IServiceProvider CreateServiceProvider(ServiceCollection services) { foreach (Action <IServiceCollection> configureServicesAction in _configureServicesActions) { configureServicesAction(services); } services.TryAddSingleton <IOptionFallbackProvider, EnvironmentVariableFallbackProvider>(); services.TryAddScoped <ICliExceptionHandler, DefaultExceptionHandler>(); services.TryAddScoped <IHelpWriter, DefaultHelpWriter>(); object?containerBuilder = _serviceProviderAdapter.CreateBuilder(services); foreach (IConfigureContainerAdapter containerAction in _configureContainerActions) { containerAction.ConfigureContainer(containerBuilder); } IServiceProvider?appServices = _serviceProviderAdapter.CreateServiceProvider(containerBuilder); return(appServices ?? throw new InvalidOperationException($"{nameof(IServiceFactoryAdapter)} returned a null instance of object implementing {nameof(IServiceProvider)}.")); }
private void CreateServiceProvider() { var services = new ServiceCollection(); services.AddSingleton(_hostEnvironment); services.AddSingleton(_hostBuilderContext); services.AddSingleton(_appConfiguration); services.AddSingleton <IHostApplicationLifetime, ApplicationLifetime>(); services.AddSingleton <IHostLifetime, XamarinHostLifetime>(); services.AddSingleton <IXamarinHost, XamarinHost>(); services.AddSingleton <XamarinNavigationProxy>(); services.AddSingleton <INavigation>(sp => sp.GetRequiredService <XamarinNavigationProxy>()); services.AddSingleton <INavigationProxyBuilder, NavigationProxyBuilder>(); services.AddSingleton <IExtendedNavigationBuilder, NavigationBuilder>(); services.AddOptions(); services.AddLogging(); foreach (var configureServicesAction in _configureServicesActions) { configureServicesAction(_hostBuilderContext, services); } var startup = services.BuildServiceProvider().GetService <IXamarinStartup>(); if (startup != null) { startup.ConfigureServices(_hostBuilderContext, services); } var containerBuilder = _serviceProviderFactory.CreateBuilder(services); foreach (var containerAction in _configureContainerActions) { containerAction.ConfigureContainer(_hostBuilderContext, containerBuilder); } // If no navigation root has been configured, then set it to the application services.TryAddSingleton <XamarinNavigationRootDelegate>(sp => () => sp.GetRequiredService <XamarinApplicationDelegate>()()); _appServices = _serviceProviderFactory.CreateServiceProvider(containerBuilder); if (_appServices == null) { throw new InvalidOperationException($"The IServiceProviderFactory returned a null IServiceProvider."); } if (_appServices.GetRequiredService <IXamarinHostingPlatform>() == null) { throw new InvalidOperationException($"Please register an instance of {nameof(IXamarinHostingPlatform)}, this can be done using the {nameof(IXamarinHostBuilder)}.{nameof(XamarinHostBuilderExtensions.UsePlatform)} extension method"); } if (_appServices.GetRequiredService <XamarinApplicationDelegate>() == null) { throw new InvalidOperationException($"Please register an instance of your application, this can be done using the {nameof(IXamarinHostBuilder)}.{nameof(XamarinHostBuilderExtensions.UseApplication)} extension method"); } var navigationBuilder = _appServices.GetRequiredService <IExtendedNavigationBuilder>(); foreach (var navigationAction in _configureNavigationConfigActions) { navigationAction(_hostBuilderContext, _appServices, navigationBuilder); } navigationBuilder.Build(); }