Permit Multibinds with MembersInjector values #4459
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
MultibindsMethodValidator
preventsMultibinds
methods from usingProducer
,Produced
,Lazy
,Provider
, andMembersInjector
as aMap
value type or aSet
element type. However, out of all of these,MembersInjector
does not actually produce or access any instances; instead, it operates on an instance provided as an argument. Therefore, using it as aMap
orSet
value type is actually quite different than any of the rest.It's actually already possible multi-bind a
Set
orMap
withMembersInjector
values, but not to declare such a binding withMultibinds
. This PR changes the validator to allow such binding declarations, and adds additional tests to verify (and demonstrate) that this works as intended.