Add nullable reference type support to schema builder #184
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.
This change enables the schema builder to analyze nullable reference type annotations when configured with the
NullableReferenceTypeBehavior.Annotated
option. Per #102, it also makesAnnotated
the default behavior as it matches the current default behavior (None
) for oblivious types and transparently enables better schema generation for non-oblivious types..NET 6 introduces new reflection APIs to support reading metadata. Since dropping support for everything below .NET 6 isn’t an option and reimplementing the parsing logic would be non-trivial, I opted to copy over the implementations to the base library’s internal infrastructure namespace. This is basically what every shim library (e.g. Nullability.Source) does as well.
The
--nullable-references
flag ondotnet avro create
is changed from a boolean to an enum to support theannotated
option, which becomes the default. The--nullable-references
flag ondotnet avro generate
is new, and for now it’s off by default.