Add IPolymorphicJsonConvertor interface and JsonSourceGenerationMode.Metadata support#338
Merged
Add IPolymorphicJsonConvertor interface and JsonSourceGenerationMode.Metadata support#338
Conversation
…ractWorks, SerializeAnotherLeafContractWorks
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.
Summary
IPolymorphicJsonConvertor<T>interface with static abstract members (NET7+) enabling compile-time polymorphic dispatch via CRTP pattern (PolymorphicJsonConvertor<TConverter, T>)ConfigureJsonTypeInfoon each polymorphic converter to inject discriminator properties intoJsonTypeInfo, enablingJsonSourceGenerationMode.MetadataserializationGetPolymorphicJsonTypeInfoConfigurations()/GetEnumJsonTypeInfoConfigurations()on serializer contexts, giving consumers a clean API to register type info modifiersPolymorphicJsonConvertor.Writeto detect when discriminator is already present in type info properties (metadata mode) and delegate directly toJsonSerializer.Serializeinstead of manual property writingnetstandard2.0target to the Target project with PolySharp and System.Text.Json dependenciesSelf_prefix as NET<7 fallback bridge to the new static abstract interfaceSerializeLeafContractWorks,SerializeAnotherLeafContractWorks,SerializeLeafContractWithCustomDelimiterWorks) and aJsonSourceGenerationMode.Metadatasnapshot test