Skip to content

Add handler discovery of MediatR shim interfaces#2225

Merged
jeremydmiller merged 4 commits intoJasperFx:mainfrom
XL1TTE:issue-20202
Mar 2, 2026
Merged

Add handler discovery of MediatR shim interfaces#2225
jeremydmiller merged 4 commits intoJasperFx:mainfrom
XL1TTE:issue-20202

Conversation

@XL1TTE
Copy link
Contributor

@XL1TTE XL1TTE commented Feb 23, 2026

Implements IRequestHandler and IRequestHandler<T, TResponse> shim interfaces allowing MediatR-style handlers without MediatR dependency.

New files:

  • src/Wolverine/Shims/MediatR/IRequest.cs
  • src/Wolverine/Shims/MediatR/IRequestHandler.cs
  • src/Wolverine/Shims/MediatR/WolverineOptionsExtensions.cs
  • src/Testing/ShimsTests/ShimsTests.csproj
  • src/Testing/ShimsTests/MediatR/* (test files)

Modified:

  • build/build.cs - Added ShimsTests target
  • wolverine.sln - Added ShimsTests project

Key features:

  • No runtime reflection - uses TypeQuery discovery like IWolverineHandler
  • No MediatR dependency - pure shim interfaces
  • Full code generation support

Implements IRequestHandler<T> and IRequestHandler<T, TResponse> shim
interfaces allowing MediatR-style handlers without MediatR dependency.

New files:
- src/Wolverine/Shims/MediatR/IRequest.cs
- src/Wolverine/Shims/MediatR/IRequestHandler.cs
- src/Wolverine/Shims/MediatR/WolverineOptionsExtensions.cs
- src/Testing/ShimsTests/ShimsTests.csproj
- src/Testing/ShimsTests/MediatR/* (test files)

Modified:
- build/build.cs - Added ShimsTests target
- wolverine.sln - Added ShimsTests project

Key features:
- No runtime reflection - uses TypeQuery discovery like IWolverineHandler
- No MediatR dependency - pure shim interfaces
- Full code generation support
@XL1TTE
Copy link
Contributor Author

XL1TTE commented Feb 23, 2026

The CustomizeHandlerDiscovery feature has been utilized, allowing Wolverine to generate its own handlers, which helps eliminate reflection calls at runtime (Now i get it, thanks to Jeremy). It would be cool if users could migrate to Wolverine without having to explicitly change namespaces from MediatR's to Wolverine's. However, I understand it's likely not an option to reference non-MIT libraries from a commercial point of view.

@XL1TTE XL1TTE changed the title Add handler discovery of MediatR shim interfaces Add handler discovery of MediatR shim interfaces #20202 Feb 27, 2026
@XL1TTE XL1TTE changed the title Add handler discovery of MediatR shim interfaces #20202 Add handler discovery of MediatR shim interfaces Feb 27, 2026
@jeremydmiller
Copy link
Member

@XL1TTE I'm going to get this in pretty soon, but move things around just a bit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants