Repository navigation
Optional constructor arguments now work on class-intercepted registrations. Previously, enabling class interception on a type with an optional constructor argument (public MyService(IThing thing = null)) meant the argument couldn't be bound, because the generated proxy constructor doesn't carry the default values of the parameters it mirrors. The defaults are now read from the type being proxied and supplied on its behalf. Values passed to the resolve operation, values configured on the registration, and services available from the container all still take precedence, so binding behaves the same as it would without a proxy.
Note that this can change which constructor is selected on a class-intercepted type. A constructor with an optional argument that previously couldn't be bound is now bindable, so Autofac may select it where a narrower overload used to win. For example, given MyService(IThing thing) and MyService(IThing thing, int retries = 5), the two-argument constructor is now selected.
Updated Autofac reference to 9.3.2.
Retained support for net10.0, net8.0, netstandard2.1, and netstandard2.0.