(Suppongo che GetProductsInThisCategory
non sia inteso come metodo repo, ma metodo di categoria, correggimi se sbaglio).
Entrambe sono possibili e anche una soluzione in cui entrambe le cose sono contemporaneamente. Un Product
probabilmente conoscerà la sua categoria, quindi GetProductsByCategory(CategoryId)
avrà spesso senso, poiché Product
dipende già da Category
. L'introduzione di un metodo Category
GetProductsInThisCategory()
implicherà che Category
dipenda anche da Product
, quindi porta a una dipendenza ciclica (che è spesso accettabile, non necessariamente una soluzione errata, ma se ciò causa problemi nel tuo ambiente o architettura generale, evitalo).
Supponendo che la dipendenza ciclica non sia un problema, raccomando di implementare il metodo oi metodi che portano al codice più corto nei componenti che usano quei metodi. Se si intende implementare entrambi, poiché si prevede che il codice client possa utilizzare entrambi i metodi in modo significativo, implementarne uno in termini dell'altro metodo per evitare la logica duplicata, ad esempio:
GetProductsInThisCategory()
{
return prodRepo.GetProductsByCategory(this.ID);
}
Questo dà all'utente del tuo sistema un po 'più di "zucchero sintattico" senza aggiungere troppo codice aggiuntivo.