设为首页 加入收藏

TOP

ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)(六)
2019-09-17 15:43:16 】 浏览:66
Tags:ASP.NET Core Web 应用程序 系列 使用 内置 IoC 容器 进行 批量 依赖 注入 MVC 当中 应用
"10000"); var stu2 = StuService.GetStuInfo("10001"); string msg = $"学号:10000,姓名:{stu1.Name},性别:{stu1.Sex},年龄:{stu1.Age}<br />"; msg += $"学号:10001,姓名:{stu2.Name},性别:{stu2.Sex},年龄:{stu2.Age}"; return Content(msg, "text/html", System.Text.Encoding.UTF8); } public IActionResult Privacy() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } }

至此,完成处理,接下来就是见证奇迹的时刻了,我们来访问一下/home/index,看看是否能返回学生信息。

我们可以发现,返回了学生的信息,说明我们注入成功了。

另外通过这个例子我们可以发现在注入仓储层对象StudentRepository时,不仅控制器中注入成功了,而且在服务层中也注入成功了,说明我们ASP.NET Core内置的IoC容器DI依赖注入是全局的。

总结:

1、采用的是构造函数注入的方式,在构造函数中初始化赋值。

2、ASP.NET Core内置的IoC容器DI依赖注入是全局的。

3、DI批量依赖注入的核心思想就是根据程序集的名称通过反射获取类以及类实现的接口键值对字典,然后通过循环进行批量注入。

 

扩展:DI生命周期

生命周期是依赖注入设计原则里一个非常重要的概念,ASP.NET Core 一共有3种生命周期。

1、暂时(Transient):顾名思义,这种生命周期的对象是暂时的,每次请求都会创建一个新的实例。

services.AddTransient<IStudentRepository, StudentRepository>();
services.AddTransient<IStudentService, StudentService>();

2、作用域(Scoped):每次请求使用的是同一个实例。

services.AddScoped<IStudentRepository, StudentRepository>();
services.AddScoped<IStudentService, StudentService>();

3、单例(Singleton):第一次请求时就创建,以后每次请求都是使用相同的实例。

services.AddSingleton<IStudentRepository, StudentRepository>();
services.AddSingleton<IStudentService, StudentService>();

官方文档建议:依赖注入是静态/全局对象访问模式的替代方法,如果将其与静态对象访问混合使用,则可能无法实现依赖关系注入的优点。

至此,本章就介绍完了,如果你觉得这篇文章对你有所帮助请记得点赞哦,谢谢!!!

demo源码:

链接:https://pan.baidu.com/s/17GIgvp0JWy8BaNOE8l6p9A 
提取码:i9hh

 

参考博文:https://www.cnblogs.com/fei686868/p/11077997.html

版权声明:如有雷同纯属巧合,如有侵权请及时联系本人修改,谢谢!!!

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一般处理程序Session 下一篇(二十三)c#Winform自定义控件-..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目