asp.net-core - 为什么我应该在我的 .net 核心项目架构中使用依赖注入?
问题描述
我想详细了解.net Core的DI容器。如果假设我们有一百个类和各自的接口,并且我已经在我的 startup.cs 文件中注册了所有依赖项。那么我的问题是哪一个是真的? a)所有一百个实例都将创建启动时间,因为我在 startup.cs 中提到了所有依赖项。 b)只有那些实例将在构造函数中定义的运行时创建。
解决方案
它在某种程度上取决于生命周期,但通常,它们会根据需要进行实例化。例如,如果您将某些东西注入到控制器中,那么当该控制器被激活时,它所具有的依赖项(在构造函数中定义)被实例化,并且这些依赖项所具有的任何依赖项都被实例化,等等。例外情况是带有单例的东西寿命。它会在第一次需要时被实例化,然后显然会一遍又一遍地重用。
总而言之,不,并非所有 100 个服务都在应用启动时实例化,除非所有 100 个服务在应用启动期间以某种方式使用(导致它们需要被实例化)。
推荐阅读
- go - 从公共 API 中解耦实现
- xml - launch_background.xml 颜色到十六进制颜色
- javascript - 返回确认的嵌套报价('你确定吗?')
- web-scraping - 如何为提取的每个项目获取 url 跟踪,然后是蜘蛛?
- reactjs - act 和 useState 的单元测试错误,在 useEffect 中进行 API 调用
- java - 无法将捕获的图像存储在外部存储器中
- python - 任何可用的方法来加速 cvxpy scs 求解器?
- flutter - Cloud Firestore 在 Flutter 中的更新文档上添加文档集合
- jquery - 如何将 10 个以上的升序数字添加到升序数字数组中?
- javascript - 每 x 次增加元素中数字的值 - 未消失