voglio legare più implementazioni di un servizio e hanno tutti loro chiamati in una sola volta:Ninject multicasting
var kernel = new StandardKernel();
kernel.Bind<IBreakfast>.To<Spam>();
kernel.Bind<IBreakfast>.To<Eggs>();
kernel.Bind<IBreakfast>.To<MoreSpam>();
kernel.Get<IBreakfast>().Eat(); // call Eat method on all three bound implementations
Ninject non lo fa così, e un'eccezione di avere più associazioni. C'è un modo per aggirare quell'errore e avere tutte le implementazioni chiamate?
Inoltre, le chiamate Bind<>
possono essere in diversi progetti che possono essere caricati o meno in fase di esecuzione, pertanto la creazione di una singola implementazione per chiamarli non funzionerà. Questo fa parte di un'architettura plug-in per un sito Web ASP.NET MVC 3.
cercherò questo la mattina quando arrivo al lavoro, ma non si Ninject genera un errore sulla seconda chiamata a 'Bind <> () .Per <>() '? – MikeWyatt
@MikeWyatt: No, multipli 'Bind's vanno bene. Ciò che non va bene è andare a 'Get' che produce più di un oggetto 'Single'. Se vuoi farlo, puoi usare 'GetAll ' (o usare il raggruppamento implicito di più registrazioni tramite 'Lista ', 'T []' o 'IEnumerable ' come suggerito) (E le persone che pubblicano/codice come test non pubblicare mai cose che esplodono!). Nota che Ninject non ha alcun muchanismt per generare un Composito implicito per multicastare le chiamate nel modo desiderato. –
Funziona alla grande. Grazie. – MikeWyatt