…ok parameters
An injected property that needed a closing only an open generic registration provides was reported as AWT101, although the service is effectively registered: moving the same dependency into the constructor made it work. Expansion was seeded only from constructor and factory parameters, which pushed users to change their domain types instead of declaring the injection on the container (goal 7). Lifecycle hook parameters had the same gap.
Open generic expansion now also seeds from the injected members of every container-constructed implementation ([Inject] properties, [InjectProperty<T>] entries and [InjectProperty(typeof(...))] entries, an open-generic target applied per closing) and from the parameters of the OnActivated/OnRelease hook a registration dispatches. Collection elements and relationship shapes are unwrapped like constructor parameters, a keyed member expands the keyed closing, and the existing constraint check (AWT126), depth and count limits (AWT129) and the rule that a dropped overridable default does not seed all apply unchanged. The [InjectProperty] entries are now read before registration collection so expansion can see them, and hook overload selection is shared with expansion so only the dispatched hook seeds.
BREAKING CHANGE: an Optional injected property whose service only an open generic registration can provide is now filled with that closing, as a constructor parameter would be, instead of being left at its default. A collection-typed injected property likewise now contains the closings of matching open registrations instead of being empty.
An injected property that needed a closing only an open generic registration provides was reported as AWT101, although the service is effectively registered: moving the same dependency into the constructor made it work. Expansion was seeded only from constructor and factory parameters, which pushed users to change their domain types instead of declaring the injection on the container (goal 7). Lifecycle hook parameters had the same gap.
Open generic expansion now also seeds from the injected members of every container-constructed implementation ([Inject] properties, [InjectProperty] entries and [InjectProperty(typeof(...))] entries, an open-generic target applied per closing) and from the parameters of the OnActivated/OnRelease hook a registration dispatches. Collection elements and relationship shapes are unwrapped like constructor parameters, a keyed member expands the keyed closing, and the existing constraint check (AWT126), depth and count limits (AWT129) and the rule that a dropped overridable default does not seed all apply unchanged. The [InjectProperty] entries are now read before registration collection so expansion can see them, and hook overload selection is shared with expansion so only the dispatched hook seeds.
BREAKING CHANGE: an Optional injected property whose service only an open generic registration can provide is now filled with that closing, as a constructor parameter would be, instead of being left at its default. A collection-typed injected property likewise now contains the closings of matching open registrations instead of being empty.