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
This commit is contained in:
parent
acb96ec971
commit
513f6ac816
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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<TContainerBuilder> : IStartup
|
||||
public abstract class StartupBase<TBuilder> : StartupBase
|
||||
{
|
||||
private readonly IServiceProviderFactory<TContainerBuilder> _factory;
|
||||
private readonly IServiceProviderFactory<TBuilder> _factory;
|
||||
|
||||
public StartupBase(IServiceProviderFactory<TContainerBuilder> factory)
|
||||
public StartupBase(IServiceProviderFactory<TBuilder> 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)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue