Boa noite!
Injeção de dependência não se trata de herdar classe, pois ao herdar uma classe você já criou uma dependência do objeto x para o objeto y.
O seu Controller deve receber uma interface no construtor, desta forma você não terá uma dependência do objeto x, ao contrário vai poder receber o objeto x, y e z desde os mesmo tenho implementado o seu contrato (interface).
Segue abaixo uma exemplo:
Hoje sua Controller deve estar parecida com esta
public class PessoaController : BaseController
{
public ActionResult Index()
{
var pessoaRepositorio = new PessoaRepository();
var pessoas = pessoaRepositorio.ObterTodos();
return View(pessoas);
}
}
A ideia é transformá-la nisso:
public class PessoaController : BaseController
{
private IPessoaRepository pessoaRepositorio;
public PessoaController(IPessoaRepository pessoaRepositorio)
{
pessoaRepositorio = pessoaRepositorio;
}
public ActionResult Index()
{
var pessoas = pessoaRepositorio.ObterTodos();
return View(pessoas);
}
}
Caso os ActionResult estejam na BaseController, você pode alterar o construtor da BaseController para receber injeção de dependência:
public class BaseController
{
private IPessoaRepository pessoaRepositorio;
public BaseController(IPessoaRepository pessoaRepositorio)
{
pessoaRepositorio = pessoaRepositorio;
}
public ActionResult Index()
{
var pessoas = pessoaRepositorio.ObterTodos();
return View(pessoas);
}
}
public class PessoaController : BaseController
{
public PessoaController(IPessoaRepository pessoaRepositorio):base(pessoaRepositorio)
{
}
}
Att,
Leandro
Se foi útil, marque como útil ou como resposta.