feat: add AutoDiscoverKnownTypes to auto-register constant types#183
Merged
Conversation
Serializing an expression that captures a custom type or enum value previously threw "Error converting type" unless the caller registered each type via AddKnownType, because the DataContractSerializer requires polymorphic constant types to be known. Add an opt-in AutoDiscoverKnownTypes flag on the serializers (and ExpressionSerializer). When enabled, the node tree is walked at serialize time and the runtime types of constant values (plus their array element / generic argument types) are registered automatically. Discovery inspects types statically and never enumerates the constant values, so lazy sequences such as IQueryable are not executed. The option is off by default, so existing behavior is unchanged. Closes #158 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Serializing an expression that captures a custom type or enum value previously threw "Error converting type" unless the caller registered each type via AddKnownType, because the DataContractSerializer requires polymorphic constant types to be known.
Add an opt-in AutoDiscoverKnownTypes flag on the serializers (and ExpressionSerializer). When enabled, the node tree is walked at serialize time and the runtime types of constant values (plus their array element / generic argument types) are registered automatically. Discovery inspects types statically and never enumerates the constant values, so lazy sequences such as IQueryable are not executed.
The option is off by default, so existing behavior is unchanged.
Closes #158