Where to go next
The finished tutorial app, and where to read further on each package.
You now have a Todo API built from five packages, with every registration generated at compile time and no reflection anywhere in the request path.
- Todo/
- Todo.csproj
- Program.cs
- TodoRepository.cs
- Features/
- GetTodosQuery.cs
- GetTodoQuery.cs
- GetTodoQueryCache.cs
- GetTodo.cs
- CreateTodoCommand.cs
- CompleteTodoCommand.cs
Concepts worth reading next
These cut across every package, and the per-package guides link into them rather than repeating them.
Where each package attaches to the request path.
Reading the generated output — the fastest way to debug a DI failure.
Where the Todo in AddTodoHandlers comes from, and how to change it.
Registering one slice of an assembly per host.
The package deep dives
Behaviors, streaming handlers, dependencies and registration.
All fifteen built-in validators, custom validators and localization.
Binding, authorization, route groups and OpenAPI.
Entry options, TransformValue and the concurrency semantics.
Keyed services, open generics, factories and proxies.
Reflection-free background jobs built on Immediate.Handlers.
Things the tutorial left out
- Behaviors. The pipeline is the main extension point and the tutorial only used one
(
ValidationBehavior<,>). Creating behaviors covers ordering, generic constraints and why a behavior sometimes doesn’t run. - Route groups. Four endpoints don’t need them; forty do. See Route groups.
- Custom validators. The built-ins cover a lot, but the extensibility mechanism is Building custom validators.
- Diagnostics. Each package ships a set of analyzer rules; each has a page listing them with triggers and available code fixes, so pasting an ID into search lands somewhere useful.