W jaki sposób Castle Windsor określa, który konstruktor ma zostać rozstrzygnięty, gdy obecnych jest wiele konstruktorów?Co to jest kolejność rozwiązywania konstrukcji?
Odpowiedz
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.
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
- 1. Elementy tablicy C++ kolejność konstrukcji
- 2. Co to jest "naturalna kolejność" w TreeMap?
- 3. Co to jest kolejność rozstrzygania właściwości w narzędziu Symulator zastępczy właściwości Spring z wieloma lokalizacjami?
- 4. Co to jest Serializable? Co to znaczy?
- 5. Co to jest algorytm przesuwnego okna? Przykłady?
- 6. Co to jest "usuń to"?
- 7. Co to jest Pagel?
- 8. Co to jest _GLOBAL_OFFSET_TABLE?
- 9. Co to jest "android.R.layout.simple_list_item_1"?
- 10. Co to jest DetailsView.EnableModelValidation?
- 11. Co to jest NSPathStore2?
- 12. Co to jest czasownik = "*"?
- 13. Co to jest Postgresql_psycopg2?
- 14. Co to jest ?
- 15. co to jest .netrwhist?
- 16. co to jest Microsoft.Practices.EnterpriseLibrary.Data
- 17. Co to jest CGVector?
- 18. Co to jest $ {project.licensePath}?
- 19. co to jest alloc.h?
- 20. Co to jest PurpleEventCallback?
- 21. Co to jest global ::?
- 22. Co to jest? rodzaj?
- 23. Co to jest __meteor_bootstrap__?
- 24. Co to jest NuGetPackageImportStamp?
- 25. Co to jest LazyList?
- 26. Co to jest IllegalStateException?
- 27. Co to jest "loadall.so"?
- 28. Co to jest ws: //?
- 29. Co to jest DNVM?
- 30. Co to jest kthreadd_task
dzięki za informacje ... –
Dzięki za info Mauricio. Mam "problemy" z Windsor w projekcie związanym z S # arpArch i to bardzo pomaga! – WillCodeForCoffee
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