
AddTransient :瞬时模式:每次请求,都获取一个新的实例。即使同一个请求获取多次也会是不同的实例
例如:Controller添加一个IUser 的依赖,在Action中,IUser的实例是不同的。
使用方式: services.AddTransient<IOperationTransient, Operation>()
AddScoped :每次请求,都获取一个新的实例。同一个请求获取多次会得到相同的实例
例如:上例中,同一个Action中,实例是相同的。
使用方式: services.AddScoped<IMyDependency, MyDependency>()
AddSingleton :单例模式:每次都获取同一个实例
使用方式: services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>() //注册ISchedulerFactory的实例
也可以直接注入一个类,例如helper类: services.AddTransient<ExportHelper>()
使用场景当组件嵌套过多,而且所有组件都需要使用根组件(包括但不限于)的某一些内容时(数据或方法),使用依赖注入会比普通的传值更加方便
使用
然后在任何子组件里,我们都可以使用 inject 选项来接收指定的我们想要添加在这个实例上的属性:
相比于$parent,选择依赖注入的好处
使用依赖注入可以让我们免于暴露整个根组件信息,具体有两点
祖先组件不需要知道哪些后代组件使用它提供的属性
后代组件不需要知道被注入的属性来自哪里
当组件嵌套过多,而且所有组件都需要使用根组件(包括但不限于)的某一些内容时(数据或方法),使用依赖注入会比普通的传值更加方便
使用
// 官方示例
// 依赖注入一个getMap方法
provide: function () {
return {
getMap: this.getMap
}
}
原文链接: https://www.jianshu.com/p/8ca83311d752
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)