从应用程序中的类内部获取Autofac容器的建议方法是什么?Autofac是否提供了对类的IContainer属性的解析,还是需要在构建容器后将其全局存储?
发布于 2011-01-06 05:41:51
在大多数情况下,您都需要使用IComponentContext
或ILifetimeScope
。它们是由Autofac自动提供的,所以你所需要做的就是在其中一个上建立一个(构造函数)依赖,当前的实例就会被注入。
这两个接口都提供了标准的Resolve()
操作,而ILifetimeScope
通过添加用于启动新的嵌套生存期的方法来扩展IComponentContext
。
想要使用容器的服务来访问其他组件的组件需要在自己的作用域内访问,而不是“全局”IContainer
,这样才能返回正确的实例。例如,在HTTP请求中,注入的IComponentContext
或ILifetimeScope
将是当前请求的will或will。
大多数需要注入上下文的问题也可以(通常更优雅地)使用关系类型来克服-参见:http://autofac.readthedocs.org/en/latest/resolve/relationships.html。
https://stackoverflow.com/questions/4609360
复制相似问题