Files
Explorer-Workbench/src/Explorer.Hosting/DeferredServiceProvider.cs

18 lines
524 B
C#

namespace Explorer.Hosting;
public sealed class DeferredServiceProvider : IServiceProvider
{
private IServiceProvider? _inner;
private readonly TaskCompletionSource<IServiceProvider> _ready = new(TaskCreationOptions.RunContinuationsAsynchronously);
public Task<IServiceProvider> Ready => _ready.Task;
public void Complete(IServiceProvider inner)
{
_inner = inner;
_ready.TrySetResult(inner);
}
public object? GetService(Type serviceType) => _inner?.GetService(serviceType);
}