DI do metody w controllerze

0

Czesc czy mozliwe jest DI do metody w controllerze ? Czyli chodzi o takei cos

        [Route("example")]
        [HttpGet]
        public IHttpActionResult GetChartsByFilter(SomeService SomeService )
        {
            return Json(SomeService .TotalCount(1));
        }

Wyczytalem cos o atrybucie FromServices, ale nie znajduje mi taki namespace.

Aplikacji w asp .net webapi

Pozdrawiam

1

Powinieneś to robić w konstruktorze raczej.

0

W konstruktorze dziala bez problemu, ale nie wiem czy jest sens pakowac tyle zalznosci do konstruktora, dlatego myslalem o metodzie w tym przypadku.

1

Jeżeli masz za dużo zależności, to znaczy że łamana jest zasada SRP => podziel kontroler na kilka mniejszych, realizujących bardziej konkretne zadania. Dzięki czemu a) będzie mniej zależności, b) kod będzie czytelniejszy, bo krótszy i niełamiący SRP :P

0

Tzn, nie jest znowuz nie wiadomo ile i nie lamie zasad SRP, ale potrzebuje tego jednego serwisu, a uzyje tylko to w jednej metodzie i dlatego chcialem to wsadzic do metody. Da sie czy sie nie da? :p
Zrobilem z [InjectionMethod] na debugerze niby zlapal klase ale zaraz potem jest nullem.

4

Wstrzykiwać możesz przez konstruktor albo przez właściwości. To dość oczywiste, bo to jest operacja na poziomie konfigurowania dopiero co utworzonego obiektu, a nie wywoływania na nim metod.
Jeśli chcesz mieć coś tylko w jednej metodzie, to przekaż to jako argument jej wywołania. Tylko oczywiście bez sensu tak przekazywać zależność, a nie dane.

Jest jakaś przyczyna dla której bohatersko walczysz z problemem, który sobie wymyśliłeś? Bo tak ogólnie, to tysiące programistów na świecie nie mają jakoś problemu z posiadaniem zależności używanych w tylko jednej metodzie.

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