DI依赖注入

依赖注入是一种实现对象及其合作者或依赖项之间松散耦合的技术。
将类用来执行其操作的这些对象以某种方式提供给该类
例如,有以下两种方法

 public class DDservice
    {
        public string getName()
        {
            return "用钉钉";
        }
    }
    public class TencentService
    {
        public string getName()
        {
            return "用腾讯会议";
        }
    }

这样在使用这些方法时,必须先new该对象
DDservice dd = new DDservice();
dd.getName();
这样导致代码和该类,耦合度很高。在后面调用方法多的时候,我们需要使用腾讯会议对应方法时,就会需要更改很多地方,极其麻烦。
这个时候,就可以用到依赖注入。

一、 创建接口,需要用的类实现该接口

 public class DDservice : IService
    {
        public string getName()
        {

            return "用钉钉";
        }
    }
    public class TencentService : IService
    {

        
        public string getName()
        {

            return "用腾讯会议";

        }


    }
        public interface IService
        {
            string getName();
        }

二、将控制器创建有参构造函数,参数为接口,例如

这个构造参数作用:asp.net core应用保证 如果改参数类型注册在IOC容器中,对应的类就会返回

public class DIController : Controller
    {
        private IService _service;
        //这个构造参数作用:asp.net core应用保证 如果改参数类型注册在IOC容器中,对应的类就会返回
        public DIController(IService service)
        {
            this._service = service;
            
        }

        public IActionResult Index()
        {
            

            return Content(_service.getName());
        }
}

三、需要在Stratup中激活引用
依赖注入的容器为Stratup中的ConfigureServices方法,在ConfigureServices加入
每当有其他类型请求一个IService实现这个接口的对象时,就返回DDservice的对象

//每当有其他类型请求一个IService实现这个接口的对象时,就返回DDservice的对象
Services.AddTransient<Iservice,DDservice>();//该方法为每个调用创建一个实例
//Services.AddScoped< Iservice,DDservice >();//该方法为一个请求一个实例
//Services.AddSingleton< Iservice,DDservice >();//单例模式

关于以上三种依赖注入生命周期
Transient:在每次请求时,生成一个新的实例
Scoped:在每次web请求时生成新的实例,web请求结束,生命周期截止
Singleton:单例模式,只会生成一个实例,知道应用程序停止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值