From 513f6ac8164e1b421f0122f9898a55222b71e843 Mon Sep 17 00:00:00 2001 From: Kristian Hellang Date: Fri, 23 Jun 2017 17:48:06 +0200 Subject: [PATCH] Avoid having to return anything in StartupBase.ConfigureServices (#957) * Implement IStartup explicitly so we don't have to return a service provider * Inherit StartupBase and override CreateServiceProvider --- .../SampleStartups/StartupBlockingOnStart.cs | 3 +- .../Startup/StartupBase.cs | 32 +++++++++++-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/samples/SampleStartups/StartupBlockingOnStart.cs b/samples/SampleStartups/StartupBlockingOnStart.cs index c46010e18b..65a226f3cd 100644 --- a/samples/SampleStartups/StartupBlockingOnStart.cs +++ b/samples/SampleStartups/StartupBlockingOnStart.cs @@ -11,11 +11,10 @@ namespace SampleStartups { public class StartupBlockingOnStart : StartupBase { - public override IServiceProvider ConfigureServices(IServiceCollection services) + public override void ConfigureServices(IServiceCollection services) { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 - return base.ConfigureServices(services); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/src/Microsoft.AspNetCore.Hosting/Startup/StartupBase.cs b/src/Microsoft.AspNetCore.Hosting/Startup/StartupBase.cs index 83e65c8d9e..5a180ba9b4 100644 --- a/src/Microsoft.AspNetCore.Hosting/Startup/StartupBase.cs +++ b/src/Microsoft.AspNetCore.Hosting/Startup/StartupBase.cs @@ -11,36 +11,40 @@ namespace Microsoft.AspNetCore.Hosting { public abstract void Configure(IApplicationBuilder app); - public virtual IServiceProvider ConfigureServices(IServiceCollection services) + IServiceProvider IStartup.ConfigureServices(IServiceCollection services) + { + ConfigureServices(services); + return CreateServiceProvider(services); + } + + public virtual void ConfigureServices(IServiceCollection services) + { + } + + public virtual IServiceProvider CreateServiceProvider(IServiceCollection services) { return services.BuildServiceProvider(); } } - public abstract class StartupBase : IStartup + public abstract class StartupBase : StartupBase { - private readonly IServiceProviderFactory _factory; + private readonly IServiceProviderFactory _factory; - public StartupBase(IServiceProviderFactory factory) + public StartupBase(IServiceProviderFactory factory) { _factory = factory; } - public abstract void Configure(IApplicationBuilder app); - - public virtual void ConfigureServices(IServiceCollection services) + public override IServiceProvider CreateServiceProvider(IServiceCollection services) { - - } - - IServiceProvider IStartup.ConfigureServices(IServiceCollection services) - { - ConfigureServices(services); var builder = _factory.CreateBuilder(services); ConfigureContainer(builder); return _factory.CreateServiceProvider(builder); } - public virtual void ConfigureContainer(TContainerBuilder containerBuilder) { } + public virtual void ConfigureContainer(TBuilder builder) + { + } } } \ No newline at end of file