[release/8.0-preview7] Fix binding logic for dictionaries with complex elements #89193
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.
Backport of #89117 to release/8.0-preview7
/cc @layomia
Customer Impact
This change corrects the binding logic emitted by the configuration binding generator, for dictionaries with complex element types. The emitted code currently causes a compilation error. This issue was reported by a community member (#89010).
A complex element type is parsed from
IConfiguration
instances that have child sections, similar to parsing from a JSON object or array. This differs from types that are parsed from strings, e.g. primitives likestring
andint
.We expect that having complex dictionary elements as part of target configuration type graphs is fairly common. Fixing this bug would unblock further usage of the generator in the reported issue, and likely many other customers as the feature is used more.
Testing
Unit tests have been added for complex collection elements, for both dictionaries and lists. The new tests also cover the reported use case. Existing tests verify that This also verifies that the compilation problem is now fixed.
Risk
Low; It's a one-line test fix.