Diciamo che ho un'interfaccia ISomething
. Ho anche implementazioni dell'interfaccia dell'interfaccia n
, ad esempio ASomething
e BSomething
. Voglio determinare tutte le implementazioni di tale interfaccia e salvarle in una lista o in un'altra struttura di dati utile.
Una soluzione che conosco è trovare tutte le implementazioni tramite una riflessione. La mia domanda è : è questo il modo migliore per farlo? Esiste un modello che ogni implementazione si registra sul sistema chiamando un metodo? Se sì, come si chiama? Man mano che il progetto cresce, il ciclo su tutte le classi solo due trova che le due implementazioni mi sembrano inefficienti.
Il linguaggio qui è vb.net ma la domanda si rivolge in generale ai linguaggi orientati agli oggetti.
Modifica: per essere un po 'più specifico sulla domanda.
Ho un'interfaccia utente che può creare progetti. In precedenza, questi progetti avevano dati diversi ma erano tutti dello stesso tipo. Generalmente un progetto viene generato copiando un file modello in una cartella e quindi riempiendo alcuni valori.
La situazione ora è che un progetto può essere di tipo A
o tipo B
. La differenza è che un file modello diverso viene copiato e anche altri dati vengono caricati in modo diverso. C'è anche la possibilità che in futuro ci possa essere il tipo C
, ma non lo so ancora. La mia idea era la creazione di un'interfaccia e diverse implementazioni di questa interfaccia. L'interfaccia utente quindi, al caricamento, cerca tutte le implementazioni di tale interfaccia e offre all'utente una scelta tramite un menu a discesa o un controllo simile.
Ho pensato che quando un altro sviluppatore crea C
, sarebbe bene se questa nuova funzionalità apparisse automaticamente nell'interfaccia utente senza che l'altro sviluppatore toccasse il codice per l'interfaccia utente. Speravo di evitare infinite catene if-else e volevo anche evitare una specifica esplicita di ciascun tipo di progetto.
Questa idea porta alla domanda sopra.