dependency-injection - ASP.NET Core 内置 DI 系统中的 DI Modules

标签 dependency-injection asp.net-core

我已经使用 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/

相关文章:

asp.net-mvc-2 - 我的 MVC 自定义 ControllerFactory 可以工作,但还能更好吗?

java - 使用 Guice 将字符串注入(inject)类进行 JUnit 测试

c# - 如何使用 MEF 在代码中注册类型?

c# - 使用 .NET Core API 上的 Azure AD 对用户进行身份验证?

amazon-web-services - 如何使用查询从 DynamoDb 中的表中获取所有记录

java - 在运行时配置 OSGi 依赖注入(inject)

c# - 在 MS 单元测试 (.NET Core) 中设置 System.Diagnostics.Activity.Current

asp.net-core - 使用具有目标框架名称(如 #if !NETSTANDARD1_6)的代码编译 netcoreapp1.0

asp.net-core - ASP.NET MVC6 脚手架在 BETA 8 中不起作用

c# - 根据 ctor 参数名称注入(inject)多个绑定(bind)