Dispatcher
A small CQRS library for .NET applications that use dependency injection.
Focused APIs for queries, commands, notifications, handlers, and pipeline behaviors, with a source generator that makes the whole dispatch Native AOT-friendly.
public sealed record GetGreetingQuery(string Name) : IQuery<string>;
internal sealed class GetGreetingQueryHandler
: IQueryHandler<GetGreetingQuery, string>
{
public ValueTask<string> HandleAsync(
GetGreetingQuery query,
CancellationToken cancellationToken = default) =>
ValueTask.FromResult($"Hello, {query.Name}!");
}
// Program.cs
builder.Services
.AddDispatcher()
.AddDispatcherHandlers(typeof(Program).Assembly);
app.MapGet("/greetings/{name}", async (
string name,
IQueryDispatcher queries,
CancellationToken cancellationToken) =>
{
var greeting = await queries.QueryAsync(
new GetGreetingQuery(name),
cancellationToken);
return Results.Ok(greeting);
});