Cosa dovrei fare attenzione quando si costruisce una libreria di classi abbastanza complessa da utilizzare l'iniezione di dipendenza interna?Quali sono le migliori pratiche per le librerie di classi che utilizzano l'integrazione delle dipendenze per le operazioni interne?
Supponendo che utilizzerà Castle Windsor (ad esempio), quale sarebbe il miglior luogo/metodo per configurare il contenitore, dato che la libreria verrà utilizzata da una semplice applicazione di console (senza DI), moduli Web che utilizzano lo stesso contenitore (Castle Windsor) e le app Web che utilizzano un contenitore diverso (NInject)?
+1 Considerati i requisiti stabiliti nell'OP, il modello di facciata si presenta come un buon adattamento. Tuttavia, mi chiedevo se la decisione di nascondere un DI Container come dettaglio di implementazione fosse saggia, ma suppongo che dipenda ... –
È un buon inizio, grazie. Inoltre, potrei anche usare Initialize() per passare i valori di configurazione runtime richiesti contenuti in un oggetto da Castle DictionaryAdapter o qualcosa di simile, a seconda dell'applicazione chiamante. – alexandrul
BTW, invece di un metodo 'Initialize()', raccomando vivamente un metodo Factory o simile http://blog.ploeh.dk/2011/05/24/DesignSmellTemporalCoupling –