Ich bin ein Anfänger mit Burg Windsor; und irgendwie mit Apress Pro Mvc Buch eingeführt. In dem Projekt, an dem ich arbeite; Ich benutze Castlewindsor Controller Factory anstelle von MVC Controller Factory; also kann ich parametrisierte Konstruktoren haben und ich kann die Abhängigkeiten injizieren. Gibt es eine Möglichkeit, der Windsorcontroller-Factory mitzuteilen, dass sie die Werte in die Eigenschaften der Controller-Klasse eingibt, ohne den Konstruktor zu durchlaufen? Der Grund, warum ich dies tun möchte, ist, weil ich Logging-Abhängigkeit habe; Emailler Abhängigkeit; Datenbankabhängigkeit; Theme-Engine-Abhängigkeit; und ich möchte nicht diesen Parameter viele Parameter im Konstruktor verwenden.CastleWindsor füllt die Klassenfelder auch
Antwort
Wenn Windsor eine Service-Implementierung auflöst, werden standardmäßig alle Eigenschaften mit öffentlichen Settors gefüllt, die er erfüllen kann.
Beachten Sie jedoch, dass es manchmal Sinn macht, die Abhängigkeit im Konstruktor aufzulösen, denn sie garantiert, dass jede Instanz immer in einem gültigen Zustand ist. Stellen Sie sich das Unit-Testing-Szenario vor, in dem die Person, die den Test schreibt, verrückt wird über die Notwendigkeit zu wissen, welche Abhängigkeiten geliefert werden sollten. Wenn alle Abhängigkeiten in den c'tor gehen, wird der Tester keine andere Wahl haben, als die getestete Instanz mit allen erforderlichen Abhängigkeiten zu versorgen (als Stubs oder Mocks).
Wie auch immer, wie für Ihre Frage, Windsor Unterstützung C'tor und Eigenschaft Injektion von Standard
Schloss Windsor automatisch alle Objekte mit öffentlichen Setter füllen, die es weiß, wie zu füllen.
Das bedeutet, wenn Sie eine Klasse
public MyClass {
public SomeDependency {get; set;}
}
haben, solange der Behälter zu wissen, so konfiguriert ist, wie SomeDependency zu lösen es versuchen wird, um es zu lösen und zu injizieren.
Manchmal habe ich dieses Standardverhalten als lästig empfunden. This facility gibt Ihnen feinere Kontrolle über den Prozess.
- 1. Die Notwendigkeit privater Klassenfelder
- 2. Können Klassenfelder versiegelt werden?
- 3. Annotate ererbte Klassenfelder
- 4. Abstrakte Klassenfelder Redundanz C#
- 5. Warum Klassenfelder nicht überschrieben werden
- 6. Nicht-Standard-Typoskript Schnittstelle/Klassenfelder
- 7. Xamarin Bild füllt die Seite
- 8. Registrieren Sie verschiedene Einstellungen für IServiceBehavior mit CastleWindsor
- 9. Sollen Instanz-/Klassenfelder in Delphi vorangestellt werden?
- 10. Unicorn Speichernutzung füllt fast die ganze RAM
- 11. Wie public static Klassenfelder in PHP4 erklären
- 12. Finden synthetische Mitglieder in Klassenfelder in Scala
- 13. Gradle - Kann nicht auf Klassenfelder zugreifen
- 14. Ausblenden bestimmter Klassenfelder von print_r oder var_dump
- 15. Ist es möglich, Klassenfelder mit unsicheren
- 16. Benennen Präferenz für Klassenfelder in C#?
- 17. Suche füllt nicht die gesamte Breite
- 18. SQLiteDataAdapter füllt nicht die Datentabelle angegeben
- 19. Wie man Videogröße füllt die Seitenbreite
- 20. Best Practice: Instanzvariablen über die Zeit füllt
- 21. Android scrollview füllt nicht die Elternansicht
- 22. Ajax-Bibliothek, die mehrere Felder füllt
- 23. Wie füllt man die Tabelle vertikal?
- 24. CSS Hintergrund Text füllt die Box
- 25. match_parent füllt Eltern nicht!
- 26. nBuilder füllt nur Werttypen
- 27. SQLite füllt Nullwerte
- 28. Autofac füllt keine Aktionsfiltereigenschaft
- 29. Farbe füllt Unter Datenleitung
- 30. ListView füllt nicht
und wenn es die Eigenschaften nicht füllt, aber der Konstruktor; Wo soll ich hinschauen? – user149383
Ich würde sagen - poste deinen Code in Windsors Benutzergruppe. Sie werden wahrscheinlich schnell eine schnelle Hilfe bekommen –