Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Injeção de dependência no controller

Boa tarde. No controller usamos o mesmo padrão do que no DAO, um construtor recebendo uma dependência. No caso do DAO tivemos que ir no config do Ninject para configurar a dependência, no caso do controler não tivemos que fazer e sequer o instrutor mencionou o mesmo(ninject). Como a dependência foi feita? Pelo Ninject? Se sim, como?

2 respostas
solução!

Olá Diogo,

na verdade no caso do FinancasContext precisamos adicionar a injeção para adicionar a chamada do método .InRequestScope().

O que acontece é se a classe tiver um construtor, seja o default ou um que você criou, o NInject por padrão consegue injetá-la em qualquer lugar sozinho, sem precisar de configuração. Por isso quando no Controller você recebe injetado um DAO, mesmo o DAO não estando configurado o NInject conseguirá instanciá-lo chamando o construtor que recebe o FinancasContext.

Porém vamos supor que o seu controller recebe duas classes DAO diferentes, ambas com construtores que recebem o FinancasContext. Quantos FinancasContext faria sentido o NInject criar? No caso, para não desperdiçar muitas conexões com o banco, seria legal ter 1 FinancasContext criado e o mesmo contexto é usado nos 2 DAOs. O problema é que se a gente não configurar nada o NInject acabaria criando 2 FinancasContext diferentes, um para cada DAO. Só que colocando o kernel.Bind<FinancasContext>().ToSelf().InRequestScope() configura para que o FinancasContext seja criado apenas 1 vez para cada requisição, por conta do InRequestScope().

Muito obrigado.