Pregunta

¿Cuál es el método sugerido para obtener el contenedor AutoFAC desde dentro de una clase en la aplicación? ¿Autofac proporciona resolver una propiedad de Icontainer en una clase o necesito almacenar el contenedor a nivel mundial una vez que la he construido?

¿Fue útil?

Solución

Necesitarás IComponentContext o ILifetimeScope Para la mayoría de los propósitos. Autofac proporcionan automáticamente, por lo que todo lo que necesita hacer es tomar una dependencia (constructor) de uno de ellos y se inyectará la instancia actual.

Ambas interfaces proporcionan el estándar Resolve() operaciones, mientras ILifetimeScope extender IComponentContext Al agregar métodos para comenzar nuevas vidas anidadas.

Los componentes que desean usar los servicios del contenedor para acceder a otros componentes deben hacerlo dentro de su propio alcance, en lugar del 'global' IContainer, para que se pueda devolver la instancia correcta. Por ejemplo, dentro de una solicitud HTTP, el inyectado IComponentContext o ILifetimeScope Será el de la solicitud actual.

La mayoría de los problemas que requieren un contexto inyectado también pueden superarse (a menudo más elegantemente) utilizando tipos de relaciones; ver: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top