Medi8or 2.0.0
dotnet add package Medi8or --version 2.0.0
NuGet\Install-Package Medi8or -Version 2.0.0
<PackageReference Include="Medi8or" Version="2.0.0" />
<PackageVersion Include="Medi8or" Version="2.0.0" />
<PackageReference Include="Medi8or" />
paket add Medi8or --version 2.0.0
#r "nuget: Medi8or, 2.0.0"
#:package Medi8or@2.0.0
#addin nuget:?package=Medi8or&version=2.0.0
#tool nuget:?package=Medi8or&version=2.0.0
Medi8or
Medi8or provides a simple and flexible implementation of the Mediator pattern for .NET, based on the abstractions defined in Medi8or.Abstraction.
This package includes:
- ✅ Dependency Injection support
- ⚙️ Two ready-to-use implementations:
ISender: uses reflection with caching for fast dynamic dispatchIMediator: usesIServiceProviderfor direct handler resolution
If you're working in a single project, installing only
Medi8oris enough — it already includes a reference toMedi8or.Abstraction.
📦 Installation
dotnet add package Medi8or
✨ Features
- Plug-and-play
.AddMedi8or()extension for DI - Reflection-based request dispatch with internal caching via
ISender - DI-based request dispatch with
IMediator - Clean separation between command/query and their handlers
- Minimal, dependency-free, and testable
🔌 Usage
Define a query and handler
public class GetUserByIdQuery : IRequest<UserDto>
{
public string Id { get; }
public GetUserByIdQuery(string Id)
{
Id = Id;
}
}
public class GetUserByIdHandler : IRequestHandler<GetUserByIdQuery, UserDto>
{
public async Task<UserDto> Handle(GetUserByIdQuery request, CancellationToken cancellationToken)
{
// Logic here
}
}
Register via DI
builder.Services.AddMedi8or();
Automatically scans and registers all
IRequestHandler<>implementations from the specified assembly.
Send the request using ISender or IMediator
// ISender use reflection
UserDto user = await _sender.SendAsync(new GetUserByIdQuery(id), cancellationToken);
// IMediator use ServiceProvider
UserDto user = await _mediator.SendAsync<GetUserByIdQuery, UserDto>(new(id), cancellationToken);
⚖️ ISender vs IMediator
| Feature | ISender (Reflection + Cache) |
IMediator (Service Provider) |
|---|---|---|
| Handler Resolution | Uses reflection with caching | Uses IServiceProvider |
| Performance | Fast after initial reflection | Fast and direct |
| Setup Flexibility | No need to register each handler | No need to register each handler |
| Recommended for | Flexible apps, background services | High-performance apps, DI-first |
🔗 Related Packages
Medi8or.Abstraction: contains the base interfaces (IRequest, IRequestHandler<>, ISender, IMediator). Already included as a dependency — no need to install it separately for single project's solution.
🛠️ Requirements
- .NET 9+
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net9.0
- Medi8or.Abstractions (>= 2.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.