Skip to content

v6.6.1

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 15 Oct 19:20
9c270a2

6.6.1 (2026-10-15)

Bug Fixes

  • dispatch every handler interface a class implements (#335) (a4c5a9d), closes #334

Performance Improvements

  • cache stateless handlers on the static mediator's fallback (#333) (e8006ff), closes #328

Documentation

  • correct README benchmark rows, sample and package list (#329) (a3ac9c8)

Tests

Behaviour changes

#333, perf: cache stateless handlers on the static mediator's fallback

On the static Mediator, with no factory registered, a stateless handler is now one shared instance per handler type instead of a new instance per call. The only observable difference is reference identity. In theory, a parameterless constructor with side effects, such as counting constructions in a static field, now runs once instead of once per call. Handlers with any instance state, and every IMediator/DI dispatch, behave exactly as before.

#335, fix: dispatch every handler interface a class implements

Handlers that were silently skipped now run. A class implementing INotificationHandler<T>, IRequestHandler<TReq, TRes> or IStreamRequestHandler<TReq, TRes> more than once is dispatched for every interface, on both the static Mediator and IMediator, instead of only the first. New Publish, Send and CreateStream overloads appear for the previously skipped types. Code that relied on one of them being a no-op, or that called them through a different handler, will now reach this class.

A partial handler class with more than one base-list declaration no longer reports a spurious ZAM002.