解决IContainer

在应用程序中从类内部获取Autofac容器的build议方法是什么? Autofac是否提供了解决一个类的IContainer属性,或者我是否需要在创build一个全球化的容器后存储它?

您将需要IComponentContextILifetimeScope用于大多数目的。 这些是由Autofac自动提供的,所以你只需要对其中的一个(构造函数)进行依赖,并且当前的实例将被注入。

两个接口都提供标准的Resolve()操作,而ILifetimeScope通过添加启动新的嵌套生命期的方法来扩展IComponentContext

希望使用容器服务访问其他组件的组件需要在其自己的范围内,而不是“全局” IContainer ,以便返回正确的实例。 例如,在HTTP请求中,注入的IComponentContextILifetimeScope将是当前请求的一个。

大多数需要注入上下文的问题也可以(通常更优雅地)使用关系types来克服 – 参见: http : //autofac.readthedocs.org/en/latest/resolve/relationships.html 。