Ich habe NInject seit einiger Zeit verwendet, und jetzt werde ich ein Projekt in Asp.net Core starten. Scheint NInject cannot be used with Asp.net Core. So, jetzt ist meine Frage ist Asp.net Kern bieten keine di modules just as NInject oder andere Di-Container bieten?DI Module in ASP.NET Core integrierte DI-System
Antwort
Asp.Net Core bietet ein DI-Framework, das es ermöglicht, ein Objekt für jede Auflösungsanforderung per HTTP-Anforderung oder Singleton hinzuzufügen. All dies wird in der ConfigureServices
Methode ex getan:
public void ConfigureServices(IServiceCollection services)
{
//Your configuration
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
können Sie mehr lesen über sie hier
https://docs.asp.net/en/latest/fundamentals/dependency-injection.html
Es beantwortet nicht wirklich die OPs Frage, ob es eine Modulunterstützung gibt, wo die Module in jeder Klassenbibliothek definiert sind und es Registrierungen dort gibt und die Hauptanwendung nur die Modulklasse während des Bootstrappings lädt – Tseng
Wie kommt es das nicht beantwortet Frage? Die Frage ist über asp.net Core Support für eine DI, und die Antwort ist, es hat eine fertige, so was wäre die Antwort von Ihrem POV? und warum sollten wir einen anderen DI wie Ninject vorschlagen, wenn es schon OOB ist? –
Nein, die Frage bezieht sich nicht auf ASP.NET Core Support für DI, das OP weiß, dass es da ist. Er fragte speziell nach Modulen. Module sind in der Bibliothek platzierte Klassen, die Registrierungen durchführen, im Gegensatz zu den Registrierungen in der Mail-Anwendung. Sie können hier https://github.com/ninject/Ninject/wiki/Modules-and-the-Kernel über die Module in Ninject nachlesen. Andere IoC haben es auch (CastleWindsor, Autofac, Unity Container). Aber das DI von ASP.NET Core hat das nicht aus den Gründen, auf die ich in meiner Antwort hingewiesen habe – Tseng
ASP.NET Kern keine Modulträger überhaupt nicht zur Verfügung stellen. Es ist ein einfacher Out-of-the-Box-Container, in den IoC-Container von Drittanbietern eingesteckt werden können.
So gibt es keine automatische Registrierung, Assembly Scannings, Dekoratoren, Interzeptoren oder Module. Wenn Sie möchten, müssen Sie Frameworks von Drittanbietern (AutoFac, StructureMap usw.) verwenden.
3rd-Party-Bibliotheken registrieren mit Registrierungsmethoden, die wie services.AddXxx()
in ConfigureServices
Methode aufgerufen werden.
public static class MyLibraryServiceCollectionExtensions
{
public static IServiceCollection AddMyLibrary(this IServiceCollection services)
{
services.TryAddScoped<IMyService,MyService>();
return services;
}
}
Es ist bevorzugte Art und Weise Bibliotheken zu registrieren (weil es auf jedem IoC-Container hängt nicht außer für den eingebauten in IServiceCollection
, die auch 3rd-Party-Container verwenden, wenn in ASP.NET-Core angeschlossen) für Sachen, wie "Business-Logik-Bibliothek" gibt es nicht wirklich so etwas (wo Module waren zuvor nützlich).
Um nur zu den anderen guten Antworten hinzuzufügen, können Sie z. SimpleInjector. Es ist ein brillanter DI-Container, der .Net Core (und auch ASP.Net Core) unterstützt. Weitere Informationen zur Verwendung mit .Net Core here.
- 1. ASP.NET Core-Reflexion di
- 2. Auflösen von Instanzen mit ASP.NET Core DI
- 3. asp.net-core DI - Bereiche und Registrierung
- 4. Register-Instanz in ASPNET-Core-DI
- 5. Injizieren einer Fabrik Func mit ASP.NET Core-DI
- 6. Asp.Net Core RC1 -> RTM DI Änderungen - Removed FromServices
- 7. ASP.NET MVC Core DI injizieren Liste der Dienste
- 8. eine MediatR Pipeline beschränkt Postprocessor Registrierung mit ASP.NET Core-DI
- 9. Wie DI Container weiß, was Konstruktoren benötigen (ASP.NET Core)?
- 10. Warum sollte ein DI-Container von Drittanbietern über den integrierten ASP.NET Core DI-Container verwendet werden?
- 11. Ersetzen Sie Ninject durch .NET Core integrierte DI mit typisierten Parametern
- 12. Property Injection in Asp.Net Core
- 13. asp.net mvc _ViewStart DI Hooks
- 14. Wie Hinzufügen IHttpContextAccessor in der Startup-Klasse in der DI in ASP.NET Core 1.0?
- 15. IServiceProvider in ASP.NET Core-
- 16. SymmetricSecurityKey in ASP.NET CORE
- 17. ServicePointManager in ASP.NET Core
- 18. UserHostAddress in Asp.net Core
- 19. @ Html.EnumDropDownListFor in Asp.net Core
- 20. Request.Files in ASP.NET CORE
- 21. AntiForgeryConfig.UniqueClaimTypeIdentifier in ASP.NET Core
- 22. Wie asp.net Core integrierten Ilogger
- 23. ASP.NET Core Identity-Implementierung in Orchard Core
- 24. ASP.NET Core löst automatisch alle Abhängigkeiten
- 25. Zugriff auf ASP.NET Core DI-Container aus der statischen Factory-Klasse
- 26. ASP.Net MVC: Wie in ASP.NET Core-
- 27. Warum kann ASP.NET Core DI ILogger <T>, aber nicht ILogger lösen?
- 28. Wann verwendet man integrierte ASP.NET Login-Kontrolle
- 29. Dropdownmenü in ASP.NET Core 1.0
- 30. Verschlüsselte Konfiguration in ASP.NET Core
Sie fehlinterpretierten [this] (https://stackoverflow.com/questions/32788637/continued-ninject-support-in-asp-net-mvc-6/32797105#32797105) beantworten. Die Antwort besagt eindeutig, dass Ninject * verwendet werden kann. – Steven