我正在学习如何正确使用 DI 容器,但无法理解一点。我读到,我无法将生命周期较小的服务注入生命周期较长的服务中。例如,我不应该将
Scoped
服务注入到 Singleton
服务中。我在 Transient
服务中找不到有关 Scoped
服务的信息。
我正在 Stack Overflow 和文档中搜索信息,但找不到答案。从我的角度来看,这是一个很好的方法,因为 DI 容器将控制
Transient
服务的创建和处置(如果需要),这些服务在每次请求时创建,与 Transient
生命周期的主要思想保持一致。但是,我想确定这一点,因为我在 .NET 平台方面没有丰富的经验。
好吧,最好是自行测试 - 如果您尝试解决作用域服务的瞬态服务,ASP.NET 应用程序不会抛出错误。
你可以这样想:瞬态服务只要需要就一直存在,如果作用域服务需要它们并且只要请求就存在,或者单例需要它们(解决单例的瞬态服务),那么这是完全有意义的也很好用)。