MediatR - usunięcie powtarzalnego kodu

MediatR - usunięcie powtarzalnego kodu
N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 647
0

W mojej aplikacji korzystającej z MediatR większość handlerów zaczyna się od podobnego kodu:

Kopiuj
private readonly ApplicationDbContext _db;
private readonly IAuthContext _auth;

public SomeCommandHandler(ApplicationDbContext db, IAuthContext auth)
{
    _db = db;
    _auth = auth;
}

Czy jest jakiś ładny sposób na uniknięcie pisania za każdym razem tych samych pól i konstruktora? Myślałem o napisaniu jakiegoś HandlerBase i skorzystaniu z service locator, ale przeczytałem, że to antywzorzec (testowanie tych handlerów byłoby kłopotliwe).

Aventus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UK
  • Postów: 2235
3

Może jakiś generyczny Handler bazowy po którym Twoje handlery będą dziedziczyły i przekazywały zależności do bazowego konstruktora? Konstruktor może je wtedy wystawiać jako właściwości protected.

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 647
0

Fajne, ale i tak dalej będzie trzeba pisać konstruktory. Ale szczerze mówiąc, wątpię, by dało się z nich zrezygnować.

N0
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 647
Aventus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UK
  • Postów: 2235
1

Przykład z linku jak najbardziej ma sens, ale nie dotyczy problemu o który Ty spytałeś. No i Tych konstruktorów raczej nie unikniesz. Zawsze możesz spróbować napisać coś własnego, bazując na MediatR dla ułatwienia. Ja sam ostatnio się tym zająłem bo potrzebowałem mediatora z możliwością perzystencji stanu handlerów, ale to inna bajka. Tak czy inaczej myślę że konstruktory to mały problem.

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
2

To jest tak zwany małpi kod, pisanie go boli, bo małpa by go równie dobrze mogła napisać. Tyle że taki kod jest przejrzysty, czytelny i testowalny. Znacznie wyżej taki kod cenię niż próby kombinowania jak z tego githuba.

Taki kod najlepiej generować automatycznie, VS ma wbudowane Generate constructor..., deklarujemy pola wybieramy Generate constructor... i VS generuje za nas konstruktor razem w przypisaniami.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.