Files
2024-09-30 19:42:15 +01:00

49 lines
1.3 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Toolkit.Foundation;
public class ComponentHost(IServiceProvider services,
IEnumerable<IInitialization> initializations,
IEnumerable<IAsyncInitialization> asyncInitializations,
IEnumerable<IHostedService> hostedServices) :
IComponentHost
{
public IServiceProvider Services => services;
public void Dispose()
{
}
public TConfiguration? GetConfiguration<TConfiguration>()
where TConfiguration : class
{
return Services.GetService<TConfiguration>();
}
public async Task StartAsync(CancellationToken cancellationToken = default)
{
foreach (IInitialization initialization in initializations)
{
initialization.Initialize();
}
foreach (IAsyncInitialization initialization in asyncInitializations)
{
await initialization.Initialize();
}
foreach (IHostedService service in hostedServices)
{
await service.StartAsync(cancellationToken);
}
}
public async Task StopAsync(CancellationToken cancellationToken = default)
{
foreach (IHostedService service in hostedServices)
{
await service.StopAsync(cancellationToken);
}
}
}