Code:public T GetReposit<T>() where T : class { var result = default(T); if (typeof(T) == typeof(UserRepository)) { result = new UserRepository(Context) as T; } if (typeof(T) == typeof(ProductRepository)) { result = (T)(object)new ProductRepository(Context); } if (typeof(T) == typeof(CustomerRepository)) { result = (T)(object)new CustomerRepository(Context); } // etc.... return result; } // when i have BaseListPage public class BaseListPage<TEntity, TRepository> : BasePage where TEntity : Tentity where TRepository : BaseRepository<TEntity> { protected TRepository _repository; public BaseListPage() { UnitOfWork unit = UnitOfWork.Instance; _repository = unit.GetRepository<TRepository>(); } //it actually works but i want to optimize this code