依赖注入是 ASP.NET Core 里的核心概念之一,我们平常总是愉快地在Startup类的ConfigureServices方法里往IServiceCollection里注册各种类型,以致有一些同学可能误以为依赖注入是只有 ASP.NET Core 才有的特性。但实际上依赖注入也可以用于 .NET Core 的 Console app. 别忘了, ASP.NET Core 的应用本质上也只是一个 Console app而已。今天我们在Console app里试试依赖注入。

我们的目标是创建一个Console app,在其中引入依赖注入,注册不同生命周期的类型,然后创建几个线程,每个线程分别依靠依赖注入“创建”若干类型实例,然后观察不同生命周期下这些实例变量是否指向一个实例还是各不相同。

ServiceCollection

现在闭上眼睛想象一下(别睡着了),我们自己就是依赖注入的执行者,如果有一个漂亮的程序媛跟我们说她要某某类型的一个实例,我们应该怎么做?我们首先需要知道这某某类型是个什么东西以及如何创建对吧?我们如何知道呢?当然是她得提前告诉我们啊,而我们要有个地方把这些信息保留下来然后在需要的时候可以查阅。在 .NET Core里,可以依赖注入的类型叫Service,而记录这些Service信息的这地方就是ServiceCollection

所以,当程序运行起来之后,我们第一件事情就是创建一个ServiceCollection,怎么创建呢? new

// using Microsoft.Extensions.DependencyInjection
ServiceCollection services = new ServiceCollection();

听起来高大上的ServiceCollection,其创建竟然如此简单。

最新文章

  1. Java 之 I/O流
  2. 从LIS问题浅谈动态规划
  3. 使用 VS Code 来编辑 markdown 文章
  4. jdbc与 Beanshell PostProcessor 对多条结果的处理
  5. 求最长回文子串 - leetcode 5. Longest Palindromic Substring
  6. UzysAssetsPickerController中文化
  7. [Java] 字符流 Writer,输出字符数据PrintWriter
  8. CodeForces 279B Books
  9. SQL模糊查询与删除多条语句复习
  10. 在LAMP环境下搭建JSP动态网页
  11. jetty启动https
  12. phpmyadmin导出数据中文乱码问题
  13. [题解]bzoj 3223 文艺平衡树
  14. cenos7上部署python3环境以及mysqlconnector2.1.5
  15. FATAL ERROR: please install the following Perl modules before executing
  16. 怎样检测TCP/UDP端口的连通性
  17. LeetCode 112. Path Sum 二叉树的路径和 C++
  18. mysqldump常用备份参数
  19. 一文揭秘定时任务调度框架quartz
  20. python 全栈开发,Day41(线程概念,线程的特点,进程和线程的关系,线程和python 理论知识,线程的创建)

热门文章

  1. 【译】使用 CocoaPods 模块化iOS应用
  2. coreseek+sphinx+mysql+thinkphp整合
  3. Java优先队列
  4. 2.2、Hibernate用注解方式实现一对多、多对多关系
  5. CentOS 7 环境配置
  6. BZOJ 3160: 万径人踪灭
  7. css3渐变
  8. google tensorflow guide
  9. Appium 三种wait方法(appium 学习之改造轮子)
  10. java基础高级2 MySQL 高级