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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top