Mediatr + .Net 4.8 + Winforms. Da się?

Mediatr + .Net 4.8 + Winforms. Da się?
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
0

Hejka
Potrzebuję (chyba) Mediatr w aplikacji Winforms na .Net Framework 4.8.
Aktualnie używam Microsoft.Extensions.DependencyInjection.
Pytanie czy da się użyć Mediatr z MS DependencyInjection. czy trzeba zmienić DI na coś normlanego?
Ewentualnie jaki DI najprościej współpracuje z Winforms?

Przypominam, wszystko jest na .Net Framework 4.8.

markone_dev
  • Rejestracja:ponad 3 lata
  • Ostatnio:7 dni
  • Postów:822
2

Powinno się dać. To jakiej biblioteki do DI używasz nie ma znaczenia. MediatR ma wsparcie zarówno dla MS-owego DI jak i Autofaca i innych. Patrzyłeś na przykładowy kod dostępny w Google? https://stackoverflow.com/questions/68144957/how-to-use-mediatr-on-winform-net-core Co prawda przykład dla .NET Core ale nie powinno to mieć w tym kontekście żadnego znaczenia tak długo jak biblioteka do DI jest wspierana na danej wersji runtime, w Twoim przypadku .NET 4.8 bo chodzi tylko o rozwiązanie zależności do IMediatr i wstrzyknięcie implementacji do głównej formatki aplikacji, zwykle Form1. Potem to już z górki.


Programujący korpo architekt chmurowy.
Udzielam konsultacji i szkoleń w obszarze szeroko pojętego cloud computingu (Azure, AWS) i architektury systemów IT. Dla firm i prywatnie.
DevOps to proces nie stanowisko.
edytowany 3x, ostatnio: markone_dev
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
1

Ech... Dzięki za zmuszenie do myślenia.
Mediatr 9 (dla .net 4.8) nie ma AddMediatr() i się zablokowałem.

Gdyby był tu jakiś inny archeolog

Kopiuj
var services = new ServiceCollection();
            services.AddScoped<IListGenerator, ListGenerator>();
            services.AddSingleton<Form1>();
            services.AddSingleton<IMediator>(new Mediator((t) => { return ServiceProvider.GetService(t); }));

            services.AddScoped<IRequestHandler<GetStringsQuery, List<string>>, GetStringsQueryHandler>(); // test query handler
edytowany 1x, ostatnio: jacek.placek
T1
  • Rejestracja:około 3 lata
  • Ostatnio:11 miesięcy
  • Postów:27
1

MediatR i rejestracja do kontenera to nie jest jakiś rocket science, możesz popatrzeć na GH, albo nawet zrobić forka i dostosować wersję której potrzebujesz pod .NET Framework. Z tego co pamiętam to AddMediatR jest w oddzielnej bibliotece (każdy kontener ma własną implementację, można dociągnąć albo napisać). poza tym nie wiem o co chodzi z tym fragmentem kodu, ale mediatR raczej powinien być transient.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 8 godzin
  • Lokalizacja:Wrocław
2

To biedne gówienko od Microsftu długo nie obsługiwało otwartych generyków. Potem dodali obsługę w wersji dla dotnet core, ale o ile dobrze rozumiem, to Ty masz stary framework, więc nie wiem czy jest to wspierane czy nie.
Wiem, że długo stanowiło to problem dla MediatRa: https://jimmybogard.com/constrained-open-generics-support-merged-in-net-core-di-container/

Najprościej i tak będzie, jeśli sam sobie napiszesz command dispatcher. :)

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.