排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
.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
这样就比较方便了
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739
评价