Skip to content

0.6.0

Choose a tag to compare

@jeremydmiller jeremydmiller released this 13 Aug 01:00
· 19 commits to main since this release
b246075

ConfigureFisher(...) — the lambda form of IConfigureFisher (#70)

Four extension methods on IServiceCollection, mirroring Marten's ConfigureMarten and Polecat's ConfigurePolecat — a primary and a targeted pair, each with and without the container:

services.ConfigureFisher(options => ...);
services.ConfigureFisher((serviceProvider, options) => ...);
services.ConfigureFisher<IReportingStore>(options => ...);
services.ConfigureFisher<IReportingStore>((serviceProvider, options) => ...);

This is the surface an integration package uses to layer its own StoreOptions contributions onto a store somebody else registered. Wolverine.Fisher's ancillary-store support is the caller, and having the three stores present the same shape here is what JasperFx/wolverine#3907 asked for.

Fixed: a contribution registered against the closed IConfigureFisher<T> silently did nothing

Fisher resolves IConfigureFisher and filters by the contribution's own interfaces; Marten and Polecat resolve the closed IConfigure*<T> directly. So code ported from either — services.AddSingleton<IConfigureFisher<IMyStore>, MyConfiguration>() — registered against a service type GetServices<IConfigureFisher>() does not return, because the container matches on the service type a registration named rather than on what it implements. A contribution that compiled, registered, and never ran.

Both registration styles are now swept and deduplicated by reference, so a contribution registered against both service types is still applied once.

If you register IConfigureFisher<T> implementations this way, they will start running on 0.6.0. That is the intent — but it is a behaviour change, so it is worth checking that what they configure is what you meant.

Also

Full changelog: 1fe0468...v0.6.0