BuildingBlocks.Mediator
1.0.0
See the version list below for details.
dotnet add package BuildingBlocks.Mediator --version 1.0.0
NuGet\Install-Package BuildingBlocks.Mediator -Version 1.0.0
<PackageReference Include="BuildingBlocks.Mediator" Version="1.0.0" />
<PackageVersion Include="BuildingBlocks.Mediator" Version="1.0.0" />
<PackageReference Include="BuildingBlocks.Mediator" />
paket add BuildingBlocks.Mediator --version 1.0.0
#r "nuget: BuildingBlocks.Mediator, 1.0.0"
#:package BuildingBlocks.Mediator@1.0.0
#addin nuget:?package=BuildingBlocks.Mediator&version=1.0.0
#tool nuget:?package=BuildingBlocks.Mediator&version=1.0.0
BuildingBlocks.Mediator
CQRS-first Send + ordered pipeline mediator for .NET — ICommand / IQuery, ISender, host behaviors, optional telemetry, and startup handler validation.
Disclaimer: BuildingBlocks.Mediator is not designed to replace other mediator or messaging packages. It is a focused CQRS Send + pipeline building block for developers who want manual control over design patterns — registration, pipeline order, validation, telemetry, and host composition — rather than a batteries-included framework.
Requirements
- .NET 10 (
net10.0) — v1 ships this TFM only (no multi-targeting)
Install
dotnet add package BuildingBlocks.Mediator
60-second quick start
services.AddMediator(cfg =>
{
cfg.RegisterServicesFromAssemblyContaining<CreateOrderHandler>();
cfg.AddOpenBehavior(typeof(ValidationBehavior<,>), order: 0);
cfg.UseTelemetry();
cfg.ValidateOnStartup = true;
});
public sealed record CreateOrder(string Product, int Qty) : ICommand<OrderId>;
public sealed class CreateOrderHandler : ICommandHandler<CreateOrder, OrderId>
{
public Task<OrderId> Handle(CreateOrder command, CancellationToken ct)
=> Task.FromResult(new OrderId(Guid.NewGuid()));
}
// Prefer ISender at call sites
await sender.Send(new CreateOrder("SKU-1", 2), ct);
Features
- CQRS markers:
ICommand/ICommand<T>/IQuery<T>(no non-genericIQuery) - Void commands via
ICommand : ICommand<Unit>(pipeline on the real type) - Ordered open/closed pipeline behaviors (
AddOpenBehavior+ optionalorder) CommandPipelineBehavior/QueryPipelineBehaviorfilter basesUseTelemetry— optional ActivitySource enrichment around Send (wraps pipeline + handler; not a behavior)ValidateOnStartup— missing/duplicate handler checks at registrationHandlerLifetime— configure discovered handler lifetime (default Transient)- Exact-one handler resolution at Send (clear errors for missing/ambiguous handlers)
- Open-generic handlers — scanned and closed on demand
- Built-in assembly scanner — no Scrutor dependency
What it is not (v1)
- No
Publish/INotification - No streaming (
CreateStream) - No exception handlers that replace results (faults rethrow)
- No built-in FluentValidation or metrics (host
AddOpenBehavior) - Not fully Native AOT (runtime
MakeGenericTypewrappers) - Open-generic handlers always resolve as Transient (ignore
HandlerLifetime)
Docs
Demo host: FeatureFusion in the same repository.
License
MIT — Copyright (c) 2026 Mohammad Hasan Hosseini
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
See CHANGELOG.md in the repository for release notes.