首页 > 解决方案 > 为什么我应该在我的 .net 核心项目架构中使用依赖注入?

问题描述

我想详细了解.net Core的DI容器。如果假设我们有一百个类和各自的接口,并且我已经在我的 startup.cs 文件中注册了所有依赖项。那么我的问题是哪一个是真的? a)所有一百个实例都将创建启动时间,因为我在 startup.cs 中提到了所有依赖项。 b)只有那些实例将在构造函数中定义的运行时创建。

标签: asp.net-coredependency-injectionasp.net-core-mvcsolid-principles

解决方案


它在某种程度上取决于生命周期,但通常,它们会根据需要进行实例化。例如,如果您将某些东西注入到控制器中,那么当该控制器被激活时,它所具有的依赖项(在构造函数中定义)被实例化,并且这些依赖项所具有的任何依赖项都被实例化,等等。例外情况是带有单例的东西寿命。它会在第一次需要时被实例化,然后显然会一遍又一遍地重用。

总而言之,不,并非所有 100 个服务都在应用启动时实例化,除非所有 100 个服务在应用启动期间以某种方式使用(导致它们需要被实例化)。


推荐阅读