我正在.Net Core中学习DI,我发现所有示例仅使用ServiceCollection
的一个实例。我想知道该实例是否一定是单例,但由于我们可以调用new
,我感到困惑。可能是由于我缺乏知识,所以拥有多个ServiceCollection
实例确实有意义。欢迎任何评论和建议!
答案 0 :(得分:2)
与创建多个服务提供商相比,efficient
更少,Dangerous
更少。创建一个实例可以使您将所有服务都放在一个地方,而不必将其划分为多个提供程序实例。
服务提供者不必一定是单身,但它使依赖项注入框架的用户不太可能走上糟糕的道路。
在这种情况下,糟糕的路将您的dependencies
分隔开来,后来在获得依赖时必须通过/知道正确的dependency provider
可供选择。
这使您的代码比原先要复杂得多,并且对您,尤其是将要加入您的项目的其他人都没有好处,并且必须弄清楚哪个提供程序具有可以访问数据库的对象
大多数frameworks
的{{1}}可以静态访问,这也使您可以更轻松地检索服务并将服务提供者合并到项目中。拥有多个实例将使其变得困难。
通常使用依赖注入,例如,将其直接传递到构造函数中。
简而言之: