我正在服务中传递IContainer所以我读到传递它并不好,而是只将其用于应用程序的根目录并传递IComponentContext或ILifetimeScope。所以我试图了解哪些应该使用IComponentContext或ILifetimeScope。不明白差异
答案 0 :(得分:10)
ILifetimeScope扩展了IComponentContext。它添加了一些开始新生命周期范围的方法。如果您需要创建新的生命周期范围,请依赖ILifetimeScope
,否则我会建议IComponentContext
,这样您就不会请求超出要求的功能。
依赖于任何一个而不是反模式。您的DI感知代码与DI-unaware外部世界之间始终存在边界。例如。 Windows不了解DI,但您的代码依赖于Autofac。在此边界上,您需要使用ILifetimeScope
或IComponentContext
来弥补这一差距。
但是,如果您可以通过Autofac注入依赖项而不是从IComponentContext
检索,那么您应该这是首选选项。