feat(multibindings): Enable spanning injectors for Multibinder, MapBinder, and OptionalBinder#1925
Open
ralstonba wants to merge 1 commit intogoogle:masterfrom
Open
feat(multibindings): Enable spanning injectors for Multibinder, MapBinder, and OptionalBinder#1925ralstonba wants to merge 1 commit intogoogle:masterfrom
ralstonba wants to merge 1 commit intogoogle:masterfrom
Conversation
…nder, and OptionalBinder This commit introduces a new 'contributor' API for Multibinder, MapBinder, and OptionalBinder, allowing PrivateModules to contribute bindings to an extension point defined in a parent injector. Key Changes: - Introduced , , and methods. - Added to handle automatic key exposure in PrivateModules. - Updated , , and to support a non-binding container mode. - Fixed and to correctly unwrap instances from private injectors. - Added reproduction and verification tests: and .
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR introduces a new 'contributor' API for Multibinder, MapBinder, and OptionalBinder, allowing PrivateModules to contribute bindings to an extension point defined in a parent injector.
The inability for PrivateModules to contribute to multibindings has come up multiple times with various workarounds being proposed:
This PR attempts to resolve this by adding a new API to contribute to existing multibindings across public and private modules without creating a new local binding within the PrivateModule
Key Changes:
newSetContributor,newMapContributor, andnewOptionalContributormethods.permitSpanInjectors()to handle automatic key exposure in PrivateModules.RealMultibinder,RealMapBinder, andRealOptionalBinderto support a non-binding container mode.MultibindingsSpanningInjectorsTestandOptionalBinderSpanningInjectorsTest.