Repositório genérico - IRepository <T> ou IRepository
Eu vi duas abordagens diferentes para criar repositórios genéricos. Quais são as diferenças entre essas duas abordagens (prós e contras)? Por favor diregard diferença nos métodos porque eu estou interessado em diferença entre
public interface IRepository<T> where T : class
e
public interface IRepository : IDisposable
Existe alguma diferença na funcionalidade, flexibilidade, teste de unidade ...? O que vou ganhar ou perder?
Existe alguma diferença de como eles são registrados nas estruturas de injeção de dependência?
Opção 1
public interface IRepository<T> where T : class
{
T Get(object id);
void Attach(T entity);
IQueryable<T> GetAll();
void Insert(T entity);
void Delete(T entity);
void SubmitChanges();
}
opção 2
public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}