refactor: 支持设置多个WebApplicationBuilder和WebApplication配置函数

This commit is contained in:
2024-01-25 15:55:09 +08:00
parent 0f58e4ce4b
commit 154ea2b7f2
5 changed files with 33 additions and 12 deletions

View File

@@ -10,16 +10,20 @@ public class WebApplicationHostedService : IHostedService
{
private readonly WebApplicationBuilder _websiteBuilder = WebApplication.CreateBuilder();
private readonly Action<WebApplication> _configureWebApplication;
private readonly List<Action<WebApplication>> _webApplicationConfigurations;
private Website? _currentWebsite;
public WebApplicationHostedService(Action<WebApplicationBuilder> configureWebApplicationBuilder,
Action<WebApplication> configureWebApplication,
public WebApplicationHostedService(List<Action<WebApplicationBuilder>> webApplicationBuilderConfigurations,
List<Action<WebApplication>> webApplicationConfigurations,
IServiceProvider hostServiceProvider)
{
_configureWebApplication = configureWebApplication;
configureWebApplicationBuilder(_websiteBuilder);
_webApplicationConfigurations = webApplicationConfigurations;
foreach (Action<WebApplicationBuilder> configure in webApplicationBuilderConfigurations)
{
configure(_websiteBuilder);
}
AddHostServices(hostServiceProvider);
}
@@ -31,7 +35,10 @@ public class WebApplicationHostedService : IHostedService
}
WebApplication application = _websiteBuilder.Build();
_configureWebApplication(application);
foreach (Action<WebApplication> configure in _webApplicationConfigurations)
{
configure(application);
}
IHostLifetime websiteLifetime = application.Services.GetRequiredService<IHostLifetime>();
_currentWebsite = new Website(application, websiteLifetime);
}