Scrutor — automatyczna rejestracja zależności (dependency injection)

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ł.

Przykładowo, jeśli w naszym assembly chcemy:

  • zarejestrować automatycznie zależności interfejs-klasa,

    • z pominiecięm atrybutów: filter.Where(type => !typeof(Attribute).IsAssignableFrom(type),
  • z pominięciem już istniejących zależności: UsingRegistrationStrategy(RegistrationStrategy.Skip)

… to możemy dodać do naszego pliku Startup.cs kod:

private static readonly Type AssemblyMarkerType = typeof(Startup);

// ...

public void ConfigureServices(IServiceCollection services)
{
    // ...
    ConfigureDependencies(services);
}

private static void ConfigureDependencies(IServiceCollection services)
{
    services.Scan(x => x.FromAssembliesOf(AssemblyMarkerType)
                        .AddClasses(filter => filter.Where(type => !typeof(Attribute).IsAssignableFrom(type)))
                        .UsingRegistrationStrategy(RegistrationStrategy.Skip)
                        .AsImplementedInterfaces());
}

Scrutor zarejestruje nam wszystkie interfejsy, które są zdefiniowane w naszym assembly (ale nie są atrybutami).

Więcej na temat Scrutor na stronie GitHub.

Opublikowano 14 listopada 2021

Blog o programowaniu
Dariusz Woźniak · GitHub · LinkedIn · Twitter · Goodreads