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();
}
}