public void Register(IUnitOfWorkRegisteration unitOfWorkRegisteration) { if (IsDisposed) { throw new InvalidOperationException("UnitOfWork provider has been already disposed"); } lock (UnitOfWorkCreators) { ILifetimeScope childScope = LifetimeScope.BeginLifetimeScope(containerBuilder => { containerBuilder.RegisterType(unitOfWorkRegisteration.UnitOfWorkCreatorType) .As <IUnitOfWorkCreator>() .SingleInstance(); unitOfWorkRegisteration.Initialize(containerBuilder); }); IUnitOfWorkCreator unitOfWorkCreator = childScope.Resolve <IUnitOfWorkCreator>(TypedParameter.From(childScope)); UnitOfWorkCreators.Add(unitOfWorkRegisteration.Name, unitOfWorkCreator); } }