Ich bin in DI verwirrt. Ich habe viele Artikel gesehen, die erklärt, dass DI mithilfe von Konstruktor implementiert werden kann und einige Artikel erwähnt DI mit Ninject. Daher kann ich den Einsatz von Ninject nicht verstehen. Wenn ninject nicht vorhanden ist, funktioniert auch der Code. Können Sie bitte erklären, was der Vorteil der Verwendung von Ninject ist.DI mit Ninject
Antwort
Zitiert
Darin Dimitrov
Was für mich Ninject bieten nicht mit, dass ich nicht nur folgenden grundlegenden Prinzipien der losen Kopplung tun kann?
- weniger Codezeilen in der
Composition Root
- Ein Standard-Container Ihr Objekt für den Umgang mit Lebensdauern
- Viele Plugins für die Injektion in spezifischen Kontexten wie klassische WebForms, ASP.NET MVC, ASP.NET Web API
- Möglichkeit zu entsorgen automatisch IDisposable
- ... Objekte
Alle Dinge, die Sie sho old handle sonst manuell. Davon abgesehen ist das DI-Framework von geringer Bedeutung. Es sollte schnell sein und die spezifischen Funktionen bieten, die Sie für Ihre Anwendung benötigen. Das DI-Framework sollte jedoch in keiner Weise die Art beeinflussen, in der Sie Ihren Code und die verschiedenen Ebenen in Ihrer Anwendung lose miteinander verknüpfen (Programmierung gegen Interfaces und abstrakte Klassen, um die Kopplung zwischen den verschiedenen Ebenen Ihrer Anwendung zu schwächen).
Denken Sie also an das DI-Framework als etwas, das nur in der Composition Root Ihrer Anwendung eingreift und als Framework, das Sie blitzschnell durch ein anderes Framework ersetzen oder sogar Ihre Objektlebensdauern manuell handhaben könnten.
Zum Beispiel ist der Code, den Sie in Ihrer Frage gezeigt haben, sehr schlecht, da er Ihre Layer an ein bestimmtes DI-Framework bindet. Diese [Inject]
Attribut dort ist wie ein Krebs. Dies bedeutet, dass Ihr Anwendungscode auf einem bestimmten DI-Framework beruht.
Auch ich empfehle Ihnen, lesen Sie diese book.
- 1. Ninject vs Unity für DI
- 2. DI mit Ninject in eine Klassenbibliothek
- 3. Warum schlägt meine Ninject DI-Anwendung mit einer ActivationException fehl?
- 4. Übersetzen von Ninject nach ASP.NET MVC 6 DI
- 5. Verwenden Ninject DI in meiner eigenen OWIN Middleware
- 6. DI Module in ASP.NET Core integrierte DI-System
- 7. Integration von ASP.NET-MVC mit Silverlight mit WCF und Ninject als IoC/DI
- 8. DI Constructor Injection Neatness
- 9. Ersetzen Sie Ninject durch .NET Core integrierte DI mit typisierten Parametern
- 10. Ninject 2 fehlt RegisterAllControllersln?
- 11. Wie verwendet man AutoMapper.5.2.0 mit Ninject?
- 12. With.Parameters.ConstructorArgument mit Ninject 2.0
- 13. Ninject Logger mit NLog
- 14. DbContext mit Ninject ADO.NET
- 15. WPF App mit Ninject
- 16. Kompilierungsfehler mit Ninject
- 17. Ninject mit MembershipProvider | Roleprovider
- 18. Zyklische Abhängigkeit mit Ninject
- 19. Integrationstest mit Ninject
- 20. Ninject: Registrieren einer bereits erstellten Instanz mit Ninject?
- 21. Ninject Injection aller Instanzen eines generischen Typs mit Ninject
- 22. SignalR Abhängigkeit Resolver Problem mit Ninject
- 23. Warum sollte ein DI-Container von Drittanbietern über den integrierten ASP.NET Core DI-Container verwendet werden?
- 24. Injection HttpContext in Ninject 2
- 25. Problem mit angular2 tesing DI
- 26. Das Repository-Muster mit DI
- 27. Feder DI mit dynamischen Konstruktorargumente
- 28. OpenRasta DI Probleme mit StructureMap
- 29. Transitive DI mit Kuchen Muster
- 30. Angular2 DI mit ES2016 Dekoratoren?
Eine [2. Auflage dieses Buches] (https://www.manning.com/seemann2/) ist derzeit in der Herstellung und Kapitel 3 wird in Kürze veröffentlicht werden. – Steven