3 .net core 依赖注入

Asp.net core的依赖注入:我们向IServiceCollection服务集合注册我们的类,然后在控制器的构造方法中直接以该类为参数,而不用手动实例

依赖注入基本使用

服务注册:

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<IMyDependency, MyDependency>();

    ...
}

使用(称为依赖注入)

public  class  MyController :  Controller  {
    // 通过构造函数注入依赖
    public  MyController (IMyDependency  myDependency)  {      
        var my =  myDependency;    
    }

    public IActionResult MyAction () {
        // 通过 HttpContext 获取依赖
        var myDependency = (IMyDependency ) HttpContext.RequestServices.GetService(typeof(IMyDependency ));

        return View ();
    }
}

框架提供的服务

在ConfigureServices中,那些以Add开头的方法,都是在向IServiceCollection注入服务

public void ConfigureServices(IServiceCollection services)
{
    // 注册数据库上下文
    services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    // 注册 MVC 所需的服务
    services.AddMvc();
}

依赖注入容器替换

如果内置的依赖注入容器无法满足需求,可以在 Startup.ConfigureServices 方法中返回新的依赖注入容器。

public IServiceProvider ConfigureServices(IServiceCollection services){
    services.AddMvc();
    ...

    // 返回 Autofac 依赖注入容器
    return new AutofacServiceProvider(container);
}

要使用第三方容器,Startup.ConfigureServices 必须返回 IServiceProvider。

Startup中使用依赖注入

在Startup构造函数中我们可以使用依赖注入

public class Startup {
    public Startup (IConfiguration configuration) {
        Configuration = configuration;
    }
    ...
}

Asp.net core 已注册的服务

在运行我们的Startup之前,Asp.net core已经注入了如下几个服务
IApplicationBuilder:中间件生成器,利用其注册中间件
ILoggerFatory:日志工厂
IHostingEnvironment:宿主环境信息
IConfiguration:根配置信息,包含有appsettings.json文件生成的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值