Dwa powszechne mechanizmy tworzenia powiązań iniekcji zależności, na przykład przez kontener IOC, pochodzą z konfiguracji XML lub bloku imperatywnego kodu. W takich przypadkach kluczowa para wartości jest jawna (tzn. Key = requested type, value = return type).Mechanizm wiązania iniekcji automatycznej
Nadal istnieje trzecia metoda "heurystyczna", w której kontener aplikacji/IOC ma tylko klucze [IMyClass], a następnie kontener odzwierciedla zestaw zależności w zależności od złożenia aplikacji, aby znaleźć wszystkie dopasowane do nazwy klasy betonu [MyClass] . Mówiąc inaczej, wartości "zwracanego typu" są odkrywane, a nie deklarowane.
Co chciałbym wiedzieć, jest dwojaki:
- Które pojemniki MKOl (lub inne narzędzia późne wiążących) umożliwienia heurystycznego podejścia? Czy to podejście ma bardziej powszechną nazwę?
- Czy są inne techniki wiążące oprócz trzech wymienionych na liście, które są używane w praktyce?
Unity i Ninject obsługują również konfigurację opartą na konwencjach (podobnie jak większość innych widocznych kontenerów IoC). –
Unity 2.0 nie obsługuje konfiguracji opartej na konwencjach. Kiedy pisałem swoją książkę, korespondowałem z Chrisem Tavaresem (architektem Unity), który potwierdził, że nie obsługuje automatycznej rejestracji. –
Masz rację co do Unity 2.0, która nie ma natychmiastowego wsparcia poza ramką, ale możesz raczej łatwo zastosować podejście oparte na konwencjach, wykorzystując np. 'IUnityContainer.RegisterType', więc można go (łatwo) zrobić. W rzeczywistości robimy to w jednym z naszych obecnych projektów. –