我一直在使用NInject一段時間,現在我將在Asp.net核心中開始一個項目。似乎NInject cannot be used with Asp.net Core。所以現在我的問題是Asp.net核心提供的任何di modules just as NInject或其他di容器提供嗎?ASP.NET核心內置DI系統中的DI模塊
回答
Asp.Net Core提供了開箱即用的DI框架,它允許您爲每個Http Request或單例的每個解析請求添加一個對象。 所有這一切都在ConfigureServices
方法 前完成:
public void ConfigureServices(IServiceCollection services)
{
//Your configuration
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
你可以閱讀更多關於它在這裏
https://docs.asp.net/en/latest/fundamentals/dependency-injection.html
它沒有真正回答OP的問題,如果有模塊支持,其中模塊在每個類庫中定義,並在那裏註冊,主應用程序只在引導期間加載模塊類 – Tseng
它怎麼沒有回答題?問題是關於對DI的asp.net核心支持,答案是它已經做好了準備,那麼你的POV的答案是什麼?爲什麼我們應該建議像ninject這樣的另一個DI,如果它已經存在OOB? –
不,問題不是關於DI的ASP.NET核心支持,OP知道它在那裏。他特意詢問模塊。與在郵件應用程序中執行註冊相反,模塊是放置在庫中的類,用於執行註冊。你可以在這裏閱讀關於Ninject中的模塊的https://github.com/ninject/Ninject/wiki/Modules-and-the-Kernel。其他IoC也有它(CastleWindsor,Autofac,Unity Container)。但是,由於我在答覆中指出的原因,ASP.NET Core的DI沒有這個功能 – Tseng
ASP.NET核心不提供任何模塊的支持的。它被設計成一個簡單的開箱即用的容器,第三方IoC容器可以插入。
所以沒有自動註冊,程序集掃描,裝飾器,攔截器或模塊。如果你想要它們,你需要使用第三方框架(AutoFac,StructureMap等)。
第三方庫使用註冊方法進行註冊,在ConfigureServices
方法中被稱爲services.AddXxx()
。
public static class MyLibraryServiceCollectionExtensions
{
public static IServiceCollection AddMyLibrary(this IServiceCollection services)
{
services.TryAddScoped<IMyService,MyService>();
return services;
}
}
這是註冊庫(因爲它不依賴於任何IoC容器除了內置IServiceCollection
,這在ASP.NET核心時插入第三方容器使用過),爲東西首選方式就像「業務邏輯庫」一樣,並不存在這樣的事情(之前的模塊很有用)。
只需添加到其他的好答案,您可以使用例如SimpleInjector。這是一個支持.Net Core(以及ASP.Net Core)的輝煌的DI容器。查看如何使用.Net Core here的詳細信息。
- 1. MediatR與ASP.NET核心DI
- 2. 基於HttpContext的ASP.Net核心DI工廠
- 3. IServiceProvider.GetSingleton在Asp.Net核心解析爲空DI
- 4. 模型中的ASP.NET CORE DI
- 5. 內核開發:設置ES:實模式中的DI
- 6. EF核心和在Windows服務的DI
- 7. 的IoC DI用於.NET核心身份
- 8. 如何使用ASP.NET MVC核心的DI註冊自定義IObjectModelValidator
- 9. AuthorisationFilter中的統一DI WebApi
- 10. ASP.Net的WebAPI:如何通過統一DI
- 11. 從靜態工廠類訪問ASP.NET核心DI容器
- 12. 注入工廠Func鍵與ASP.NET核心DI
- 13. 如何從DI系統獲取實例?
- 14. DI容器和遺留系統
- 15. Linux內核模塊(內核3.5)中的系統調用攔截
- 16. ModelMap DI上的StructureMap DI
- 17. 內核模塊監控系統調用?
- 18. 如何在TYPO3核心的類中使用DI?
- 19. 使用ASP.NET Core的DI
- 20. JSR330 DI與彈簧DI
- 21. DI創建模式
- 22. 在傳統應用系統中應用DI實踐
- 23. ASP.NET MVC Ninject/DI - 此對象
- 24. asp.net mvc _ViewStart DI掛鉤
- 25. 與Cors的WebApi2衝突的Unity DI DI
- 26. DI的部分模擬?
- 27. ASP.NET Core中的連接字符串DI
- 28. 如何在Asp.net核心RC1使用DI裏面一個靜態方法
- 29. 配置用於Zend \ Di \ Di的類別別名
- 30. ActionAttribute DI
你誤解了[this](https://stackoverflow.com/questions/32788637/continued-ninject-support-in-asp-net-mvc-6/32797105#32797105)的答案。答案清楚地表明Ninject *可以被使用。 – Steven