Phase 18 of 30 · Topic 18.5

Assembly Scanning with Scrutor & Auto-Registration Conventions

1Concept

Scrutor enhances Microsoft.Extensions.DependencyInjection with assembly scanning conventions, automatically registering classes to matching interfaces (`IType -> Type`) across microservice assemblies.

2Architecture Diagram

Assembly Scan:
Scan(scan => scan.FromAssemblyOf<Program>()
                 .AddClasses(c => c.AssignableTo<IRepository>())
                 .AsImplementedInterfaces()
                 .WithScopedLifetime());

3Code Example

C# 13 & .NET 9
using System;

public class ScrutorConceptDemo
{
    public static void Main()
    {
        Console.WriteLine("Scrutor assembly scanning eliminates hundreds of repetitive services.AddScoped<I..., ...>() lines.");
    }
}

4Expected Output

Scrutor assembly scanning eliminates hundreds of repetitive services.AddScoped<I..., ...>() lines.

5Key Takeaways

  • Enforces consistent dependency injection architectural conventions across team codebases.
  • Supports Decorator pattern registrations (`services.Decorate<IService, LoggingServiceDecorator>()`).
  • Scans assemblies once during application bootstrap.