I had a feeling that's what you wanted. A constructor selector policy won't give you what you need.
Here's the issue - the build plan, the creation method we code gen under the hood, is only created the FIRST time you resolve a type. From then on, we re-use the build plan. The constructor called is "baked" into the build plan at creation time.
The reason we do this is performance. If we used reflection to decide which constructor to call every time, you'd see at least three orders of magnitude slower object creation time (I know, I timed it). The down side is as you see - the constructor is chosen
once, and overrides don't affect which constructor is called.
You COULD do this, if you created a custom build plan policy, but be prepared for a bunch more work and the performance will most likely be terrible.
As an alternative, have you considered creating a separate SafetyParameterGroupDefinitionFactory? Get the factory out of the container, and then the factory could have explicit methods to new up the types you want (with references to the other stuff that
the container supplies).