with programming pattern hamedani courses c# linq generics repository

c# - pattern - programming with mosh



Repositorio genérico-IRepository<T> o IRepository (1)

He visto dos enfoques diferentes para crear repositorios genéricos. ¿Cuáles son las diferencias entre esos dos enfoques (pros y contras)? Por favor dirija la diferencia en los métodos porque estoy interesado en la diferencia entre

public interface IRepository<T> where T : class

y

public interface IRepository : IDisposable

¿Hay alguna diferencia en funcionalidad, flexibilidad, pruebas de unidad ...? ¿Qué obtendré o perderé?
¿Hay alguna diferencia en cómo se registran en los marcos de Inyección de Dependencia?

Opción 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(); }

opcion 2

public interface IRepository : IDisposable { IQueryable<T> GetAll<T>(); void Delete<T>(T entity); void Add<T>(T entity); void SaveChanges(); bool IsDisposed(); }


La mayor diferencia es que IRepository<T> está vinculado a un solo tipo, mientras que un IRepository está potencialmente vinculado a varios tipos. Cuál es apropiado depende en gran medida de su situación particular.

En términos generales, me parece que IRepository<T> es más útil. En el momento del uso, es muy claro cuál es el contenido de IRepository<T> are ( T ). Por otro lado, no está claro de un IRepository dado lo que está contenido dentro de él.

En los casos en que tengo que almacenar varios tipos de objetos, normalmente creo un mapa de IRepository<T> . Por ejemplo: Dictionary<T,IRepository<T>> .