Masywna lista argumentów konstruktora kontrolera podczas używania DI w MVC
Pracuję nad rozwiązaniem ASP.NET MVC3, które wykorzystuje wstrzykiwanie zależności z autofac. Nasze kontrolery są tworzone przez autofac i poprawnie, a wszystkie wymagane obiekty są poprawnie przekazywane. Obiekty te zwykle obejmują usługi, repozytoria i programy odwzorowujące konwertujące obiekty domeny na modele MVC (widok). Tak więc konstruktor kontrolera wygląda trochę tak:
public abcController(
ILogger logger,
IabcRepository abcRepository,
IabcService abcService,
IMapper<AbcDomain, AbcViewModel> abcMapper,
...
)
Niestety, z czasem te listy parametrów konstruktorów rosną dość szybko. Niektóre z naszych kontrolerów oczekują teraz 60 lub więcej parametrów.
Czy stworzyliśmy tutaj jakiś anty-wzór?
EDYTOWAĆ
Powinienem był wspomnieć, że staramy się podążać za cienkim wzorem kontolera. Również większość tych parametrów ma tendencję do mapowania - około 66%. Metody kontroli są zwykle bardzo proste i podążają za tym wzorem:
Na podstawie parametrów wywołaj odpowiednią usługę lub repozytoriumUżyj programu mapującego, aby przekonwertować wynik na odpowiedni model widokuPrzekaż model widoku do wyświetleniaLub ten wzór:
Odbierz model z akcji postUżyj programu odwzorowującego, aby przekonwertować go na odpowiedni obiekt domenyWywołaj odpowiednią usługę lub repozytorium z obiektem domeny