Praktyka DI w MVC

0

W jaki sposób najlepiej wstrzykiwać repozytoria do klas (używajac constructor injection na poziomie kontrolera czy na poziomie klasy)

przyklad:

a) na poziomie kontrolera

public class TestController : Controller  {

IProductRepository productrepository;
public TestController(IProductRepository prodrep) {
this.productrepository=prodrep;
}

public ActionResult Index() {
TestClass instance = new TestClass(productrepository);
}

}

b) na poziomie klasy

public class TestController : Controller  {
public ActionResult Index() {
TestClass instance = IoC.Resolve<TestClass>();
}
}
0

Zobacz jak działa NInject MVC. Używaliśmy go w projekcie i doskonale nadaje się jako DI w projekcie webowym.

0

Ja bym raczej wstrzykiwał repozytorium do kontrolera, ale nie rozumiem o co chodzi z punktem b...

0

Dlatych co nie zrozumieli o co mi chodziło z pkt. b:

Chodzilo mi o to, że jeżeli obiekty tworzone wewnątrz metod kontrolera korzystają z repozytoriów, to czy przekazywać im w konstruktorze wstrzyknięte interfejsy przez kontroler, czy robić constructor injection bezpośrednio na tych obiektach.

Sprawa jest prosta jeżeli metody kontrolerów korzystają bezpośrednio z repozytoriów ale co jeżeli chcemy przekazać to 'dalej', w kolejne warstwy.

0
  1. W kontrolerze pole typu repozytorium.
  2. Repozytorium wstrzykiwane do kontrolera przez konstruktor.
  3. Do innych obiektów wewnątrz metod kontrolera przekazujemy repozytorium z pola.
0

I wszystko jasne, thx ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1