Tutorials Design Patterns in C#
Mediator Pattern with MediatR — Complete Guide
Mediator Pattern with MediatR — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Design Patterns in C# on Toolliyo Academy.
On this page
Design Patterns in C# · Lesson 29 of 69
Mediator Pattern with MediatR
GoF Core ✓ → Enterprise → Cloud & Craft
Enterprise · 2 — App patterns · ~6 min · Module 4: Enterprise Design Patterns
What is this?
MediatR is an in-process messaging library: send IRequest to a single handler, or publish notifications to many handlers.
Why should you care?
ShopNest controllers stay thin — they send PlaceOrderCommand instead of injecting five services.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
// Concept aligned with MediatR shapes
public interface IRequest<T> { }
public sealed record PlaceOrderCommand(string Sku) : IRequest<Guid>;
public interface IRequestHandler<TRequest, TResponse> where TRequest : IRequest<TResponse>
{
Task<TResponse> Handle(TRequest request);
}
public sealed class PlaceOrderHandler : IRequestHandler<PlaceOrderCommand, Guid>
{
public Task<Guid> Handle(PlaceOrderCommand request)
{
var id = Guid.NewGuid();
Console.WriteLine($"placed {request.Sku} -> {id}");
return Task.FromResult(id);
}
}
// await mediator.Send(new PlaceOrderCommand("HD-100"));
Console.WriteLine(await new PlaceOrderHandler().Handle(new PlaceOrderCommand("HD-100")));
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- One command → one handler.
- Controllers depend on IMediator.
- Pipeline behaviors (logging/validation) wrap handlers in a later lesson.
Practice next
- Run the handler sample.
- Add MediatR package in a real Web API.
- Send from a minimal endpoint.
- Return a result record instead of Guid.
- Add INotification for OrderPlaced.
Remember
IRequest + handler. Thin controllers. Behaviors for cross-cutting.
ShopNest MediatR commands
POST /orders sends PlaceOrderCommand.
Outcome: Endpoint code stays tiny and consistent.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!