Przesłanianie implementacji
Przesłanianie implementacji umożliwia rozwiązanie tzw. problemu robot legs pojawiającego się kontekście kontenerów IoC. Bierze się on z konieczności instancjonowania wielu komponentów skonfigurowanych praktycznie identycznie (nogi robota), ale jednak różniących się między sobą kilkoma szczegółami (prawa/lewa stopa). Rozwiązaniem tego problemu jest możliwość tworzenia hierarchii kontenerów IoC. W korzeniu drzewa kontenerów rejestrowane są najbardziej ogólne komponenty, a w kolejnych jego poziomach - coraz bardziej szczegółowe. Wyszukiwanie komponentów odbywa się zawsze od użytego przez klienta kontenera w górę drzewa, aż do korzenia. Dzięki temu możliwe jest zasłanianie definicji komponentu przez inną definicję w kontenerze umieszczonym niżej w hierarchii.
Przykład hierarchii kontenerów pokazany jest na rysunku obok. W kontenerze głównym zarejestrowane są: komponent Comp
, zależny od komponentu Dep
typu IDep
. Kontener główny posiada także dwa kontenery potomne, z których w każdym zerejestrowana jest inna wersja komponentu IDep
- DepA
i DepB
. Żądanie udostępnienia referencji do komponentu Comp
wykonane na kontenerze głównym zwróci komponent ze wstrzykniętą zależnością Dep
, gdyż definicje obu tych komponentów są zarejestrowane w kontenerze. Natomiast to samo żądanie wykonane na jednym z kontenerów potomnych, np. A, zwróci komponent Comp
ze wstrzykniętą zależnością DepA
. Definicja komponentu Comp
zostnie wyszukana w kontenerze nadrzędnym dla A, czyli kontenerze głównym, ale definicja IDep
zostanie znaleziona bezpośrednio w kontenerze A jako DepA
.
Przykład przesłaniania strategii jest opisany na stronie specyfikacja pliku konfiguracyjnego.