Di solito, considero un gran numero di parametri come un campanello d'allarme che potrebbe esserci un problema di progettazione da qualche parte. Sto usando un repository generico per un'applicazione ASP.NET e ho un controller con un numero crescente di parametri.
public class GenericRepository<T> : IRepository<T> where T : class
{
protected DbContext Context { get; set; }
protected DbSet<T> DbSet { get; set; }
public GenericRepository(DbContext context)
{
Context = context;
DbSet = context.Set<T>();
}
...//methods excluded to keep the question readable
}
Sto usando un contenitore DI per passare DbContext al repository generico. Finora, questo ha soddisfatto i miei bisogni e non ci sono altre impiantazioni concrete di IRepository<T>
. Tuttavia, ho dovuto creare un dashboard che utilizza i dati di molte Entità. C'era anche un modulo contenente un paio di elenchi a discesa. Ora, utilizzando il repository generico, i requisiti dei parametri aumentano rapidamente.
Il controller finirà per essere qualcosa di simile a
public HomeController(IRepository<EntityOne> entityOneRepository,
IRepository<EntityTwo> entityTwoRepository,
IRepository<EntityThree> entityThreeRepository,
IRepository<EntityFour> entityFourRepository,
ILogError logError,
ICurrentUser currentUser)
{
}
Ha circa 6 IRepositories più alcuni altri per includere i dati richiesti e le opzioni dell'elenco a discesa. Nella mia mente ci sono troppi parametri. Dal punto di vista delle prestazioni, c'è solo 1 DBContext per richiesta e il contenitore DI servirà lo stesso DbContext a tutti i repository. Da un punto di vista di standard / leggibilità del codice è brutto.
C'è un modo migliore per gestire questa situazione? È un progetto del mondo reale con vincoli temporali in tempo reale, quindi non mi dilungherò su di esso troppo a lungo, ma dal punto di vista dell'apprendimento sarebbe bello vedere come tali situazioni sono gestite da altri.