2009-09-04 13 views

Odpowiedz

23

Wszystkie dostępne konstruktory są modelowane jako kandydaci i zasadniczo odbywa się wśród nich konkurs.

Każdy parametr w konstruktorze reprezentuje zależność, która może być albo spełniona, albo nie. Dla każdego kandydata konstruktora analizowane są wszystkie zależności.

Jeśli zależność może zostać spełniona, są to dwa punkty dla kandydata. Jeśli nie można go spełnić, od kandydata odejmuje się dwa punkty.

Kandydat na konstruktora z największą liczbą punktów wygrywa i wybiera instancję.

Kod tego algorytmu to here.

+0

dzięki za informacje ... –

+0

Dzięki za info Mauricio. Mam "problemy" z Windsor w projekcie związanym z S # arpArch i to bardzo pomaga! – WillCodeForCoffee

+0

Bardzo dobrze powiedział! Znalazłem ten dodatkowy link na coś podobnego, który mówi o nieodłącznym problemie z przeciążeniem konstruktorów na pierwszym miejscu w komponentach, gdy używasz kontenerów DI do tworzenia instancji klasy: http://stackoverflow.com/questions/7926686/castle- Działanie windsor-force-resolver-to-use-specified-constructor – RBT

1

Zamek Windsor użyje konstruktora z największą liczbą parametrów, których zależności może rozwiązać.

Gdy istnieje dwa konstruktory z taką samą liczbą parametrów, które może rozwiązać Windsor, zachowanie było pozornie arbitralne, ale mogło zostać naprawione.

Zobacz ten post Krzysztof Kozmic