Uso Autofac per gestire l'integrazione delle dipendenze nella mia applicazione. Tuttavia, ho un componente che fa un po 'di magia di riflessione in fase di esecuzione e non so a tempo di compilazione quali dipendenze di cui avrà bisogno.Utilizzo di Autofac come localizzatore di servizio
Ordinariamente, vorrei che questo componente faccia riferimento direttamente al Container e risolva quello che vuole. Tuttavia, la classe che crea un'istanza di questa classe non ha alcun riferimento al contenitore.
In effetti, il mio componente ha una dipendenza da Autofac. Preferirei l'accoppiamento più sciolto, ma qui non sembra un'opzione. C'è un modo per chiedere (negli argomenti del costruttore, o usando l'iniezione di proprietà, o qualsiasi altra cosa!) Autofac per darmi un riferimento al contenitore nel mio costruttore? Oppure, c'è un modo più pulito per fare in modo che Autofac mi fornisca un oggetto magico di localizzazione dei servizi che possa risolvere qualsiasi cosa?
Sarebbe interessante per vedere cosa "magia" sta facendo il componente. Forse ci sono altri modi oltre al modello del localizzatore di servizi. Potresti aggiornare con un po 'di codice? –
Posso descriverlo abbastanza bene. Quando i messaggi arrivano su un bus, il codice determina quale tipo il messaggio utilizza alcuni metadati e quindi costruisce detto tipo. Quindi ha bisogno di trovare tutti gli implementatori di IConsume '(dove' type' è il tipo dai metadati) usando Autofac e quindi chiama il metodo Consume su di esso. –
Intendi: http://kozmic.pl/2010/03/11/advanced-castle-windsor-ndash-generic-typed-factories-auto-release-and-more/ –