依赖项注入容器是单例吗?

时间:2019-02-26 13:46:15

标签: c# dependency-injection .net-core

我正在.Net Core中学习DI,我发现所有示例仅使用ServiceCollection的一个实例。我想知道该实例是否一定是单例,但由于我们可以调用new,我感到困惑。可能是由于我缺乏知识,所以拥有多个ServiceCollection实例确实有意义。欢迎任何评论和建议!

1 个答案:

答案 0 :(得分:2)

与创建多个服务提供商相比,efficient更少,Dangerous更少。创建一个实例可以使您将所有服务都放在一个地方,而不必将其划分为多个提供程序实例。

服务提供者不必一定是单身,但它使依赖项注入框架的用户不太可能走上糟糕的道路

在这种情况下,糟糕的路将您的dependencies分隔开来,后来在获得依赖时必须通过/知道正确的dependency provider可供选择。

这使您的代码比原先要复杂得多,并且对您,尤其是将要加入您的项目的其他人都没有好处,并且必须弄清楚哪个提供程序具有可以访问数据库的对象

大多数frameworks的{​​{1}}可以静态访问,这也使您可以更轻松地检索服务并将服务提供者合并到项目中。拥有多个实例将使其变得困难。

通常使用依赖注入,例如,将其直接传递到构造函数中。

简而言之:

  1. 很方便
  2. 效率
  3. 易于阅读和理解
  4. 很难以错误的方式使用它
  5. 允许它轻松用作静态对象