Autofac IComponentContext 与 ILifetimeScope

Autofac IComponentContext vs ILifetimeScope

我在服务中传递了 IContainer,所以我了解到传递它并不好,而是仅将它用于应用程序的根目录并传递 IComponentContext 或 ILifetimeScope。所以我想了解我应该使用 IComponentContext 还是 ILifetimeScope。不明白其中的区别

ILifetimeScope 扩展了 IComponentContext。它添加了一些方法来开始新的生命周期范围。如果您需要创建一个新的生命周期范围,那么依赖 ILifetimeScope,否则我会建议 IComponentContext,这样您就不会请求比要求更多的功能。

依赖其中任何一个都不是反模式。您的 DI 感知代码与 DI 不感知的外部世界之间始终存在边界。例如。 Windows 不了解 DI,但您的代码依赖于 Autofac。在此边界上,您需要使用 ILifetimeScopeIComponentContext 来弥补这一差距。 但是,如果您可以通过 Autofac 注入依赖项而不是从 IComponentContext 检索依赖项,那么您应该这样做,因为这是首选选项。