12

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

4

1 回答 1

26

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

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

于 2017-07-24T11:59:43.153 回答