我已经使用 NInject 一段时间了,现在我将在 Asp.net Core 中开始一个项目。好像NInject cannot be used with Asp.net Core .所以现在我的问题是 Asp.net 核心是否提供任何 di modules just as NInject或者其他 di 容器提供?
最佳答案
ASP.NET Core 根本不提供任何模块支持。它被设计成一个简单的开箱即用容器,第 3 方 IoC 容器可以插入其中。
因此没有自动注册、程序集扫描、装饰器、拦截器或模块。如果您需要它们,您需要使用第 3 方框架(AutoFac、StructureMap 等)。
第 3 方库确实使用注册方法进行注册,这些方法在 ConfigureServices
方法中被称为 services.AddXxx()
。
public static class MyLibraryServiceCollectionExtensions
{
public static IServiceCollection AddMyLibrary(this IServiceCollection services)
{
services.TryAddScoped<IMyService,MyService>();
return services;
}
}
这是注册库的首选方式(因为它不依赖于任何 IoC 容器,除了内置的 IServiceCollection
,第 3 方容器在插入 ASP.NET Core 时也会使用) ,对于像“业务逻辑库”这样的东西,实际上并没有这样的东西(模块以前有用)。
关于dependency-injection - ASP.NET Core 内置 DI 系统中的 DI Modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40457899/