Resolva o ICONTAINER
-
25-09-2019 - |
Pergunta
Qual é o método sugerido de obter o contêiner Autofac de dentro de uma classe no aplicativo? O Autofac fornece para resolver uma propriedade ICONTAINER em uma aula ou preciso armazenar o contêiner globalmente depois de construí -lo?
Solução
Você precisará IComponentContext
ou ILifetimeScope
Para a maioria dos propósitos. Eles são fornecidos automaticamente pelo Autofac, portanto, tudo o que você precisa fazer é tomar uma dependência (construtora) de um deles e a instância atual será injetada.
Ambas as interfaces fornecem o padrão Resolve()
Operações, enquanto ILifetimeScope
estende -se IComponentContext
Adicionando métodos para iniciar novas vidas aninhadas.
Os componentes que desejam usar os serviços do contêiner para acessar outros componentes precisam fazê -lo dentro de seu próprio escopo, em vez do 'global' IContainer
, para que a instância correta possa ser retornada. Por exemplo, dentro de uma solicitação HTTP, o injetado IComponentContext
ou ILifetimeScope
será o único para a solicitação atual.
A maioria dos problemas que exigem um contexto injetado também pode ser (geralmente com mais elegância) superar usando os tipos de relacionamento - consulte: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.