Ich bin ziemlich vertraut mit der Abhängigkeitsinjektion mit NInject in MVC3. Während der Arbeit in einer MVC3-Anwendung habe ich mit NInject eine benutzerdefinierte Controller Creation Factory entwickelt, sodass in jeden Controller, der erstellt wird, Abhängigkeiten über diese Controller Factory eingefügt werden.
Jetzt beginne ich mit der Entwicklung einer Windows-Anwendung. Ich möchte die anwendungsweite Abhängigkeitsinjektion verwenden. Das heißt, jedes Objekt muss über NInject erstellt werden, um das Testen von Einheiten zu vereinfachen. Bitte leiten Sie mich, um sicherzustellen, dass jedes erstellte Objekt nur von der NInject Factory stammt.
Wenn Button_Click
ich zum Beispiel in einem Windows-Formular bei einem Ereignis schreibe:
TestClass testClass = new TestClass()
und TestClass
hat eine Abhängigkeit von, sagen wir, ITest
dann muss es automatisch aufgelöst werden. Ich weiß, dass ich verwenden kann:
Ikernel kernel = new StandardKenel()
//AddBinding()
TestClass testClass = kenel.get<TestClass>();
Aber ich finde es mühsam, dies jedes Mal zu tun, wenn ich ein Objekt erstellen möchte. Es zwingt auch den Entwickler, das Objekt auf eine bestimmte Art und Weise zu erstellen. Kann es besser gemacht werden?
Kann ich ein zentrales Repository für die Objekterstellung haben und dann verwendet jede Objekterstellung automatisch dieses Repository?