(To pytanie nie opiera się na konkretnych ram IoC, więc interfejsy i typy w moich próbkach są meta-typy. Wystarczy wymienić je z odpowiednimi rodzajami swojego ulubionego IoC ram w twojej głowie.)Wstrzyknięcie zależności: Jak przekazać pojemnik do wstrzykiwania?
W moim Główne metody, ja zazwyczaj skonfigurować mój pojemnik robi coś takiego:
static void Main()
{
IInjector in = new Injector();
in.Register<ISomeType>().For<SomeType>();
in.Register<IOtherType().For<OtherType>();
...
// Run actual application
App app = in.Resolve<App>();
app.Run();
}
Moje pytanie brzmi, jak masz wtryskiwacza wysłane dookoła? Normalnie właśnie zarejestrowałem wtryskiwacz sam w sobie i wstrzyknąłem go do typów, które same będą robić zastrzyk, ale nie jestem pewien, czy to jest właściwy "wzór".
Dobra, co powiesz na to. Aplikacja jest WinForm i ma przycisk, który tworzy i pokazuje formularz. Po każdym naciśnięciu tego przycisku należy utworzyć i wyświetlić nową instancję tego formularza. Ten formularz ma zależności, więc musi zostać rozwiązany przez formularz aplikacji dla każdej instancji. Co teraz? – Alex
@Alex: W tym przypadku możesz użyć "Dostawców" (specjalistycznych fabryk), o których wspominałem w moim drugim poście. Różnica między wstrzykiwaniem dostawcy a wstrzykiwaniem całego iniektora jest taka, że silnie ogranicza to pośrednie, "tajne" zależności. IOW, nie powoduje degradacji wtryskiwacza do lokalizatora usług. –
@chris_l: Więc "Dostawcy" mogą utrzymywać wtryskiwacz wokół, prawda? W przeciwnym razie właśnie poruszyliśmy problem w innym miejscu. – Alex