Chcę powiązać wiele implementacji usługi i mają wszystkie z nich nazywa się naraz: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 nie tak, i rzuci wyjątek o posiadające wiele powiązań. Czy istnieje sposób, w jaki można obejść ten błąd i wywołać wszystkie implementacje?
Ponadto wywołania mogą występować w różnych projektach, które mogą, ale nie muszą być ładowane w czasie wykonywania, więc utworzenie pojedynczej implementacji do ich wywołania nie będzie działać. Jest to część architektury wtyczki dla witryny sieci Web ASP.NET MVC 3.
Postaram się to w godzinach porannych, kiedy dostać się do pracy, ale nie będzie Ninject wygeneruje błąd na drugim wywołaniu '<> (Bind). Do <>() '? – MikeWyatt
@MikeWyatt: Nie, wiele "Bindów" jest w porządku. To, co nie jest w porządku, to "Get", który daje więcej niż pojedynczy element. Jeśli chcesz to zrobić, możesz użyć 'GetAll ' (lub użyć niejawnego grupowania wielu rejestracji za pomocą 'List ', 'T []' lub 'IEnumerable ' zgodnie z sugestią) (I ludzie, którzy wysyłają/kodują ponieważ testy nigdy nie wysyłają rzeczy, które wybuchają!). Zauważ, że Ninject nie ma żadnego znaczenia do wygenerowania niejawnego Złożonego, aby rozsortować połączenia tak, jak chcesz. –
To działa świetnie. Dzięki. – MikeWyatt