Sto pensando di applicare una vera libreria di dipendenze per l'iniezione alla mia applicazione desktop C # / GTK # giocattolo. Ho scelto NInject , ma penso che questo sia irrilevante per la mia domanda.
C'è un oggetto di database, una finestra principale e diverse classi di finestre di utilità. È chiaro che posso iniettare il database in ogni oggetto della finestra, quindi qui DI è utile. Ma ha senso iniettare classi di finestre di utilità in altre classi di finestre?
Esempio: ho classi come:
class MainWindow {…}
class AddItemWindow {…}
class AddAttachmentWindow {…}
class BrowseItemsWindow {…}
class QueryBuilderWindow {…}
class QueryBrowserWindow {…}
class PreferencesWindow {…}
…
Ciascuna classe di utilità può essere aperta da MainWindow. Alcune finestre di utilità possono essere aperte anche da altre finestre di utilità. In generale, potrebbe esserci un grafico davvero complesso di chi può aprire chi. Quindi ognuna di queste classi potrebbe aver bisogno di un sacco di altre classi di finestre iniettate. Sono preoccupato che tale uso vada contro il suggerimento di non iniettare troppe lezioni contemporaneamente e diventare un odore di codice. Dovrei usare qualche tipo di oggetto locator di servizio qui?