public virtual TRepository GetRepository <TRepository>() { if (_repositoryCache.ContainsKey(typeof(TRepository))) { return((TRepository)_repositoryCache[typeof(TRepository)]); } // didn't find the repo in cache, lets create it var repoCreationMethod = _repositoryFactory.GetRepositoryFactory <TRepository>(); object repo = repoCreationMethod(DataContext); _repositoryCache[typeof(TRepository)] = repo; return((TRepository)repo); }
public TRepository GetRepository <TRepository>() { _repositoryCache.TryGetValue(typeof(TRepository), out var repoObject); if (repoObject != null) { return((TRepository)repoObject); } //Repo not found in cache, post it var repoCreationMethod = _repositoryFactory.GetRepositoryFactory <TRepository>(); if (repoCreationMethod == null) { throw new NullReferenceException("No factory found for repo: " + typeof(TRepository).Name); } repoObject = repoCreationMethod(_dataContext); _repositoryCache[typeof(TRepository)] = repoObject; return((TRepository)repoObject); }