Files
speckle-sharp-connectors/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs
T
2024-07-04 11:56:34 +01:00

36 lines
808 B
C#

using Autofac;
using Speckle.InterfaceGenerator;
namespace Speckle.Autofac.DependencyInjection;
public partial interface IUnitOfWork<TService> : IDisposable
where TService : class { }
[GenerateAutoInterface]
public sealed class UnitOfWork<TService> : IUnitOfWork<TService>
where TService : class
{
private readonly ILifetimeScope _unitOfWorkScope;
private bool _notDisposed = true;
public UnitOfWork(ILifetimeScope unitOfWorkScope, TService service)
{
_unitOfWorkScope = unitOfWorkScope;
Service = service;
}
public TService Service { get; }
[AutoInterfaceIgnore]
public void Dispose() => Disposing(true);
private void Disposing(bool fromDispose)
{
if (_notDisposed && fromDispose)
{
_unitOfWorkScope.Dispose();
_notDisposed = false;
}
}
}