net core手动获取依赖注入对象

控制器相关中:HttpContext来获取实例

HttpContext下有一个RequestedService同样可以用来获取实例对象

IUserDAL userDAL = HttpContext.RequestServices.GetService(typeof(IUserDAL)) as IUserDAL;

方法二:使用静态类来获取依赖注入对象

新增加一个类(注意不是内部类不然都不好直接获取了):

public static class ServiceLocator
{
   public static IServiceProvider Instance { get; set; }
}

然后在Configure中去赋值一下即可:
在这里插入图片描述
使用的时候就可以直接用了
在这里插入图片描述

ConfigureServices

有时间我们可以会做一点初始化的操作,需要在这里获取

var provider = services.BuildServiceProvider();
IArticleDAL userDAL = provider.GetService<IArticleDAL>();

注意:如果这里你用了ef,并且ef用了依赖注入获取,在ConfigureServices中获取时需要放到ef配置下面
在这里插入图片描述

Configure

IArticleDAL articleDAL = app.ApplicationServices.GetService(typeof(IArticleDAL)) as IArticleDAL;

注意如果你需要获取的对象里边依赖的对象使用了Scope方式注入这样获取会报错:

Cannot resolve 'XX.IArticleDAL' from root provider because it requires scoped service 'XX.CNBLOGContext'.

需要这样获取

//手动获取依赖注入对象
IServiceScope serviceScope = app.ApplicationServices.CreateScope();
IArticleDAL articleDAL2 = serviceScope.ServiceProvider.GetService<IArticleDAL>();

View页面中:

view页面中也可以使用@context拿到httpconext对象

@Context.RequestServices.GetService(typeof(TNBLOG.Main.DAL.Interface.IBlogSetDAL))

当然在view中最好使用@inject
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值