Breve background: sto usando MEF / C # per lo sviluppo di un programma che ha un core (singleton) e più parti MEF (io li chiamo moduli, ogni modulo è un assembly separato con una classe che contiene l'esportazione MEF). Il core importa tutte le parti che sono necessarie / disponibili e le inizializza (fa sì che leggano i loro file di configurazione, quella roba avviene nei costruttori, come al solito)
Ora, il mio problema è che ho bisogno di moduli per interagire tra loro (ad esempio, il modulo A, un'interfaccia grafica utente, ha bisogno di ottenere alcuni dati da un database, dovrebbe in qualche modo chiamare una funzione sul modulo del database (modulo B).)
Come ho fatto? Certo, potrei rendere pubbliche quelle parti / moduli nel mio nucleo, aggiungere un riferimento al nucleo del mio modulo e farcela, ma in qualche modo, mi sentiresti brutto / cattivo. (principalmente perché ho dei problemi di sicurezza su un'implementazione del genere, tutti potrebbero semplicemente chiamare quella funzione, a meno che non utilizzi qualcosa come questo , ma ancora non sembra giusto.
Un altro approccio sarebbe quello di mettere tutte queste funzioni nel nucleo, dove chiamano semplicemente la funzione corrispondente del modulo. Anche questo mi fa male perché dovrei aggiungere un sacco di cose al mio nucleo e in alcuni casi sarebbe qualcosa che un potenziale cliente non userà mai perché non ha bisogno / ha il modulo specifico.
Qualcuno conosce un metodo migliore per farlo? Forse la mia linea di pensiero è andata completamente storta da qualche parte?