What is the suggested method of getting the Autofac container from inside a class in the application? Does Autofac provide for resolving an IContainer property on a class or do I need to store the container globally once I've build it?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
- How to know full paths to DLL's from .csproj f
You'll need
IComponentContext
orILifetimeScope
for most purposes. These are automatically provided by Autofac, so all you need to do is take a (constructor) dependency on one of them and the current instance will be injected.Both interfaces provide the standard
Resolve()
operations, whileILifetimeScope
extendsIComponentContext
by adding methods for starting new nested lifetimes.Components that want to use the services of the container to access other components need to do so within their own scope, rather than the 'global'
IContainer
, so that the correct instance can be returned. E.g. within an HTTP request, the injectedIComponentContext
orILifetimeScope
will be the one for the current request.Most problems that require an injected context can also be (often more elegantly) overcome using Relationship Types - see: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.