Document ReferenceResolver limitations with custom converters in System.Text.Json #47606
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 System.Text.Json documentation was missing critical information about a limitation when using custom converters with
ReferenceHandler.Preserve. Users were confused why their custom converters didn't work properly when reference preservation was enabled.Problem
When using
ReferenceHandler.Preservewith custom converters, the reference handling state is not preserved when the serializer calls into custom converters. This means:ReferenceResolverinstanceReferenceHandler.CreateResolver()throws an exception because the resolver has already been createdSolution
Added a new subsection "ReferenceResolver limitations with custom converters" under the "Preserve references" section that:
ParentandChildclassesThis documentation change helps users understand why their converters don't work as expected with reference preservation and provides guidance on current limitations and potential approaches.
Fixes #44491.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
Internal previews