[release/8.0] Throw when applying JsonObjectHandling.Populate
to types with parameterized constructors.
#92947
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 #92937 to release/8.0
/cc @eiriktsarpalis
Customer Impact
We received a customer report that the newly added
JsonObjectCreationHandling
feature (aka "populate read-only members") does not behave as expected when applied to types that deserialize using parameterized constructors. On closer inspection it turned out fixing the feature for that particular use case would necessitate substantial refactoring of async serialization code, something that is too risky/time consuming to do at this stage. Instead, this PR adds checks and throws an explicit exception when users attempt to use the feature on types with parameterized constructors.Testing
Added unit testing validating the throwing behavior.
Risk
Low. Adds additional validation to product code to block the unsupported scenario.