public void SetContext(T cont) { Context = cont; // clear cached factories to change the context CreatedFactories.Clear(); }
private void Dispose(bool disposing) { if (!_isDisposed && disposing) { if (!CollectionUtils.IsNullOrEmpty(CreatedFactories)) { foreach (var disposable in CreatedFactories.Values) { disposable.Dispose(); } CreatedFactories.Clear(); } Context.Dispose(); _isDisposed = true; } }
private GenericFactory <TEntity, TKey> CreateFactoryCore <TEntity, TKey>() where TEntity : class { var disposable = CreatedFactories.ContainsKey(typeof(TEntity)) ? CreatedFactories[typeof(TEntity)] : null; if (disposable != null) { if (!disposable.IsDisposed) { return((GenericFactory <TEntity, TKey>)disposable); } CreatedFactories.Remove(typeof(TEntity)); } var factoryType = GetRepositoryType().MakeGenericType(typeof(TEntity), typeof(TKey)); try { var factoryObj = Activator.CreateInstance(factoryType, new object[] { Context, AutoCommit }); var factory = (GenericFactory <TEntity, TKey>)factoryObj; if (factory != null) { CreatedFactories.Add(typeof(TEntity), (ICommitable)factoryObj); return(factory); } } // ReSharper disable once EmptyGeneralCatchClause catch { // just return null } return(null); }