Dispatchly 1.0.2
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Dispatchly --version 1.0.2
NuGet\Install-Package Dispatchly -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Dispatchly" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Dispatchly" Version="1.0.2" />
<PackageReference Include="Dispatchly" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Dispatchly --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Dispatchly, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Dispatchly@1.0.2
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Dispatchly&version=1.0.2
#tool nuget:?package=Dispatchly&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Dispatchly
A high-performance, reliable CQRS-style mediator for .NET, inspired by MediatR but optimized for speed and simplicity.
Features
- Fast handler resolution with caching
- Clean CQRS abstractions (
IRequest<TResponse>
,IRequestHandler<TRequest, TResponse>
,IMediator
) - Notifications/events (
INotification
,INotificationHandler<TNotification>
,Publish
) - Pipeline behaviors (
IPipelineBehavior<TRequest, TResponse>
) for cross-cutting concerns - Pre- and post-processors (
IRequestPreProcessor<TRequest>
,IRequestPostProcessor<TRequest, TResponse>
) for before/after logic - Easy dependency injection integration
- .NET Standard 2.1 compatible
- MediatR-like API and extensibility
Installation
Install from NuGet:
dotnet add package Dispatchly
Quick Start
1. Define a Request and Handler
public class Ping : IRequest<string> { }
public class PingHandler : IRequestHandler<Ping, string>
{
public Task<string> Handle(Ping request, CancellationToken cancellationToken)
{
return Task.FromResult("Pong");
}
}
2. Register Dispatchly in DI
services.AddDispatchly();
3. Use the Mediator
public class MyService
{
private readonly IMediator mediator;
public MyService(IMediator mediator)
{
this.mediator = mediator;
}
public async Task<string> PingAsync()
{
return await mediator.Send(new Ping());
}
}
Notifications (Publish/Subscribe)
public class UserCreated : INotification { public string Email { get; set; } }
public class SendWelcomeEmail : INotificationHandler<UserCreated>
{
public Task Handle(UserCreated notification, CancellationToken cancellationToken)
{
// Send email logic
return Task.CompletedTask;
}
}
// Usage:
await mediator.Publish(new UserCreated { Email = "user@email.com" });
Pipeline Behaviors
public class LoggingBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
where TRequest : IRequest<TResponse>
{
public async Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
{
Console.WriteLine($"Handling {typeof(TRequest).Name}");
var response = await next();
Console.WriteLine($"Handled {typeof(TRequest).Name}");
return response;
}
}
Pre- and Post-Processors
public class ValidateRequest : IRequestPreProcessor<Ping>
{
public Task Process(Ping request, CancellationToken cancellationToken)
{
// Validation logic
return Task.CompletedTask;
}
}
public class AuditResponse : IRequestPostProcessor<Ping, string>
{
public Task Process(Ping request, string response, CancellationToken cancellationToken)
{
// Auditing logic
return Task.CompletedTask;
}
}
Why Dispatchly?
- Minimal allocations and fast handler lookup
- Familiar MediatR-like API and extensibility
- No external dependencies except for DI
- Supports notifications, pipeline behaviors, pre/post-processors
License
MIT
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- Microsoft.Extensions.DependencyInjection (>= 9.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.