Tooark.Mediator
3.3.0
dotnet add package Tooark.Mediator --version 3.3.0
NuGet\Install-Package Tooark.Mediator -Version 3.3.0
<PackageReference Include="Tooark.Mediator" Version="3.3.0" />
<PackageVersion Include="Tooark.Mediator" Version="3.3.0" />
<PackageReference Include="Tooark.Mediator" />
paket add Tooark.Mediator --version 3.3.0
#r "nuget: Tooark.Mediator, 3.3.0"
#:package Tooark.Mediator@3.3.0
#addin nuget:?package=Tooark.Mediator&version=3.3.0
#tool nuget:?package=Tooark.Mediator&version=3.3.0
Tooark.Mediator
Biblioteca com implementação de Mediator para projetos .NET, focada em CQRS/CQS com baixo acoplamento entre camadas.
Conteúdo
Visão Geral
O pacote Tooark.Mediator fornece:
- implementação concreta de
IMediator; - registro automático de handlers por assembly;
- estratégia configurável de publicação de notificações;
- integração com DI do
Microsoft.Extensions.DependencyInjection.
🔧 Instalação
dotnet add package Tooark.Mediator
⚙️ Configuração
using Tooark.Mediator.Injections;
builder.Services.AddTooarkMediator(typeof(Program).Assembly);
Também é possível configurar as opções do mediador:
using Tooark.Mediator.Enums;
using Tooark.Mediator.Injections;
builder.Services.AddTooarkMediator(options =>
{
options.NotifyPublishStrategy = ENotifyStrategy.Sequential;
}, typeof(Program).Assembly);
📦 Componentes
Classe principal
Mediator: implementação deIMediator.
Injeção de dependência
TooarkDependencyInjection.AddTooarkMediator(IServiceCollection, params Assembly[])TooarkDependencyInjection.AddTooarkMediator(IServiceCollection, Action<MediatorOptions>, params Assembly[])
Opções
MediatorOptionsNotifyPublishStrategy(padrão:ENotifyStrategy.ParallelWhenAll)
Estratégias de publicação
ENotifyStrategy.ParallelWhenAllENotifyStrategy.Sequential
Handlers suportados
IRequestHandler<TRequest, TResponse>ICommandHandler<TCommand, TResponse>ICommandHandler<TCommand>IQueryHandler<TQuery, TResponse>INotifyHandler<TNotify>
📝 Exemplos de Uso
Exemplo CQRS
using Tooark.Mediator.Abstractions;
using Tooark.Mediator.Handlers;
public sealed record CreateUserCommand(string Name) : ICommand<Guid>;
public sealed class CreateUserCommandHandler : ICommandHandler<CreateUserCommand, Guid>
{
public Task<Guid> HandleAsync(CreateUserCommand request, CancellationToken cancellationToken = default)
{
return Task.FromResult(Guid.NewGuid());
}
}
public sealed record GetUserByIdQuery(Guid Id) : IQuery<string>;
public sealed class GetUserByIdQueryHandler : IQueryHandler<GetUserByIdQuery, string>
{
public Task<string> HandleAsync(GetUserByIdQuery request, CancellationToken cancellationToken = default)
{
return Task.FromResult($"Usuário {request.Id}");
}
}
Exemplo de uso com IMediator
using Tooark.Mediator.Abstractions;
public sealed class UsersService(IMediator mediator)
{
public Task<Guid> CreateAsync(string name, CancellationToken cancellationToken)
{
return mediator.SendAsync(new CreateUserCommand(name), cancellationToken);
}
public Task<string> GetAsync(Guid id, CancellationToken cancellationToken)
{
return mediator.SendAsync(new GetUserByIdQuery(id), cancellationToken);
}
}
Exemplo de publicação de notificação
using Tooark.Mediator.Abstractions;
using Tooark.Mediator.Handlers;
public sealed record UserCreatedNotify(Guid UserId) : INotify;
public sealed class UserCreatedNotifyHandler : INotifyHandler<UserCreatedNotify>
{
public Task HandleAsync(UserCreatedNotify notification, CancellationToken cancellationToken = default)
{
Console.WriteLine($"Usuário criado: {notification.UserId}");
return Task.CompletedTask;
}
}
await mediator.PublishAsync(new UserCreatedNotify(Guid.NewGuid()), cancellationToken);
📋 Dependências
| Pacote | Versão | Descrição |
|---|---|---|
Tooark.Exceptions |
— | Exceções (ex.: BadRequestException) |
Tooark.Mediator.Abstractions |
— | Contratos base do padrão Mediator |
Microsoft.Extensions.DependencyInjection.Abstractions |
8.x | Abstrações de injeção de dependência |
🪪 Contribuição
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests no repositório Tooark.Mediator.
📄 Licença
Este projeto está licenciado sob a licença BSD 3-Clause. Veja o arquivo LICENSE para mais detalhes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. |
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Tooark.Exceptions (>= 3.3.0)
- Tooark.Mediator.Abstractions (>= 3.3.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Tooark.Mediator:
| Package | Downloads |
|---|---|
|
Tooark
Package with all Tooark resources for .NET applications. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.3.0 | 114 | 4/17/2026 |