W CQRS często definiuje się interfejsy dla handlerów, aby wymusić ujednoliconą strukturę kodu. Takie podejście stosowane jest m.in. przez bibliotekę MediatR. Nawet jeśli nie używasz żadnych bibliotek, ale ręcznie dziergasz swoje rozwiązania, możesz chcieć iść tą drogą. W moim najnowszym artykule wyjaśniłem, jak zarejestrować wszystkie handlery według konwencji za pomocą biblioteki Scrutor.
Architektura 1092 dni, 32 minuty temu 118 źrodło rozwiń
Scrutor to sprytna biblioteka, która pozwala na automatyczną rejestrację zależności (dependency injection) dla kontenera IOC Microsoft.Extensions.DependencyInjection. Ideą biblioteki Scrutor jest skanowanie kodu źródłowego, np. assembly, celem automatycznej rejestracji zależności wedle zadanych przez nas reguł.
W poprzednim wpisie pokazałem, w jaki sposób za pomocą biblioteki Scrutor dodać do wbudowanego kontenera dependency incjection w .NET Core/.NET 5 automatyczną rejestrację typów. Scrutor poza skanowaniem udostępnia również możliwość rejestrowania dekoratorów, za pomocą których możemy nawet w sposób dynamiczny konfigurować zachowanie typów w naszej aplikacji. A to wszystko bez zmiany kodu typu, do którego będziemy dodawali zachowanie.Wzorzec dekorator Dekorator ...
Od wielu lat wykorzystuję kontener Autofac do wstrzykiwania zależności. Najbardziej przypadła mi do gustu możliwość automatycznej rejestracji typów, dzięki czemu jedną linijką w kodzie można zarejestrować i skonfigurować całą rodzinę typów (implementującą na przykład jakiś interfejs). Gdy zaczynałem pracę z .NET Core, automatyczna rejestracja typów była jedną z rzeczy, której brakowało mi w domyślnym kontenerze. Na szczęście biblioteka Scrutor uzupełnia ten bra...
Jakiś czas temu podczas rozwijania swojego projektu Open Source stanąłem przed, wydawać by się mogło prostym problemem. Otóż chciałem udostepnić użytkownikom biblioteki metodę rozszerzającą, która automatycznie zarejestrowałaby w kontenarze dependency injection wszystkie klasy implementujace konkretny interfejs. W przypadku zewnętrzynych bibliotek jak np. Autofac taki zabieg jest możliwy dzieki Assebly Scaning, który wyglada następująco: builder.RegisterAssemblyTypes(myAssembly) .Where(t => t....
Sztuka programowania 2158 dni, 19 godzin, 58 minut temu 157 źrodło rozwiń