2009-09-04 11 views

Antwort

23

Alle verfügbaren Konstruktoren sind als Kandidaten modelliert und im Grunde wird ein Wettbewerb unter ihnen ausgeführt.

Jeder Parameter in einem Konstruktor stellt eine Abhängigkeit dar, die entweder erfüllt sein kann oder nicht. Für jeden Konstruktkandidaten werden alle Abhängigkeiten analysiert.

Wenn eine Abhängigkeit erfüllt werden kann, sind das zwei Punkte für den Kandidaten. Wenn es nicht erfüllt werden kann, werden zwei Punkte vom Kandidaten abgezogen.

Der Konstruktorkandidat mit den meisten Punkten gewinnt und wird ausgewählt, um die Komponente zu instanziieren.

Der Code für diesen Algorithmus lautet here.

+0

Vielen Dank für die Informationen ... –

+0

Danke für die Info Mauricio. Ich habe "Probleme" mit Windsor in einem S # arpArch ähnlichen Projekt und das hilft sehr! – WillCodeForCoffee

+0

Sehr gut gesagt! Ich fand diesen einen Link auf etwas Ähnliches, das über das inhärente Problem mit überladenen Konstruktoren an erster Stelle in Ihren Komponenten spricht, wenn Sie DI-Container verwenden, um Ihre Klasse zu instanziieren: http://stackoverflow.com/questions/7926686/castle- windsor-force-resolver-to-use-specified-constructor – RBT

1

Castle Windsor verwendet den Konstruktor mit den meisten Parametern, deren Abhängigkeiten aufgelöst werden können.

Wenn es zwei Konstruktoren mit der gleichen Anzahl von Parametern gibt, die Windsor auflösen kann, war das Verhalten scheinbar willkürlich, wurde aber möglicherweise behoben.

Sehen Sie diese post von Krzysztof Kozmic

Verwandte Themen