using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace Femto.Common; /// /// We use this to bind a scope to the request scope in the composition root /// Any scoped services provided by this subcontainer should be accessed via a ScopeBinding injected in the host /// /// public class ScopeBinding(IServiceScope scope) : IDisposable { private IServiceScope Scope { get; } = scope; public T GetService() where T : notnull { return this.Scope.ServiceProvider.GetRequiredService(); } public virtual void Dispose() { this.Scope.Dispose(); } }