Auto* Suite
Roslyn-powered .NET productivity suite

The Auto* Suite

Compile-time .NET source generators that eliminate boilerplate — zero reflection, AOT-safe, IDE-first.

By Justin Bannister · LinkedIn · GitHub

One attribute. Generated at build time. No runtime overhead.

A cohesive generator-first product suite

Purpose-built packages for dependency injection, mapping, validation, result handling, queries, and CQRS — all sharing the same compile-time, zero-reflection approach.

Dependency injection

AutoWire

Compile-time DI registration — decorate your services and AutoWire generates AddAutoWireServices() at build time.

[Scoped] / [Singleton] / [Transient]
AutoWire NuGet version badge
$ dotnet add package AutoWire copy
Object mapping

AutoMap.Generator

Compile-time object mapping — generates strongly-typed ToDto() extension methods. No AutoMapper, no reflection.

[Map(typeof(OrderDto))]
AutoMap.Generator NuGet version badge
$ dotnet add package AutoMap.Generator copy
Validation wiring

AutoValidate.Generator

Compile-time FluentValidation wiring — discovers all AbstractValidator<T> subclasses and generates AddValidators().

Convention-based discovery, no attribute needed
AutoValidate.Generator NuGet version badge
$ dotnet add package AutoValidate.Generator copy
Result handling

AutoResult.Generator

Compile-time Result<T> monad — [TryWrap] generates Try*() wrappers for every public method. Zero-ceremony error handling.

[TryWrap]
AutoResult.Generator NuGet version badge
$ dotnet add package AutoResult.Generator copy
Query specifications

AutoQuery.Generator

Compile-time LINQ query specs — generates a strongly-typed Apply(IQueryable<T>) method from a plain query class.

[QuerySpec(typeof(Product))]
AutoQuery.Generator NuGet version badge
$ dotnet add package AutoQuery.Generator copy
CQRS dispatch

AutoDispatch.Generator

Compile-time CQRS dispatcher — generates a strongly-typed IDispatcher from [Handler] classes. No MediatR, no IRequest<T>.

[Handler]
AutoDispatch.Generator NuGet version badge
$ dotnet add package AutoDispatch.Generator copy

Why compile-time?

The Auto* ecosystem leans on source generators so your architecture stays explicit, traceable, and production-ready without reflection-heavy frameworks.

Performance

Zero runtime overhead

Registration, mapping, and dispatch happen at build time. Your app starts faster.

Developer experience

IDE-first

Navigate to generated code with F12. Roslyn diagnostics appear as squiggles. Lightbulb fixes available.

Deployment

AOT-safe

No reflection means full compatibility with .NET Native AOT, Blazor WebAssembly, and trimmed deployments.