zoukankan      html  css  js  c++  java
  • .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 

    这样就比较方便了

  • 相关阅读:
    十度好友问题
    TCP传输连接建立与释放详解
    Android多点触控技术实战,自由地对图片进行缩放和移动
    如何判断一个变量是数组Array类型
    HDU 4725 The Shortest Path in Nya Graph-【SPFA最短路】
    解决外贸电商难题,PayPal中国外贸电商大会圆满礼成
    动物-蛇:家蛇
    动物-蛇:水蛇
    动物-鱼:河蟹
    动物-鱼:河虾
  • 原文地址:https://www.cnblogs.com/daxiongblog/p/13959089.html
Copyright © 2011-2022 走看看