Ho un TreeView
e voglio abilitare il menu contestuale quando clicchi con il tasto destro del mouse. È composto da elementi di diverse classi , ma condividono tutti la stessa classe base .
Quindi, stavo considerando di creare un FactoryClass
per ogni classe di oggetto differente che restituisce semplicemente un'interfaccia IContextMenu
personalizzata (che in seguito verrà utilizzata da qualche altra parte del programma per rendere effettivamente il menu).
Questo è il flusso di lavoro corrente che ho in mente
- Il
TreeView
intercetta il clic con il tasto destro e richiede un'altra classe (chiamiamoloContextMenuFactory
) per creare un menu contestuale per quel tipo di oggetto -
ContextMenuFactory
reindirizza a uno specifico classe di produzione associata al tipo di elemento di input (comeIFooItemContextMenuFactory
) -
IFooItemContextMenuFactory
class effettivamente crea l'istanzaIContextMenu
Ciò che rende difficile questa attività è il secondo passo.
Non so come posso organizzare il mio codice per renderlo dinamico perché l'unica soluzione che ho in mente è solo implementare un interruttore e creare la classe factory dopo che ho riconosciuto il tipo.
Il modo ideale sarebbe utilizzare il contenitore per trovare l'implementazione configurata, in questo modo non devo modificare ogni volta che creo un nuovo oggetto digita lo switch precedentemente suggerito.