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.
Changes:
JsonSerializer.{Serialize|Deserialize}calls with direct converter access (JsonSerializerOptions.GetConverter->converter.{Read|Write}) to prevent frequent creation of top-level JSON reader stacks.ValueSpanaccess instead of allocating intermediatestringvalues (e.g. when comparing property names or parsing/formatting values).JsonEncodedTextconstants for compile-time constant literals (e.g. property names).Utf8Parser/Utf8Formatterfor primitive value conversions.SourceMarker<T>should only (de-)serialize the wrapped type to prevent unnecessary allocations.IStreamSerializable)IStreamSerializable)SortOptionsspecial caseBreaking user facing changes:
Field.Formatproperty and corresponding constructor and inferrer overloads.This property was not used anymore for quite some time (got replaced by the
FieldAndFormattype).Field/Fieldsstatic factory methods and conversion operators no longer return nullable references but throw exceptions instead (Field) if the inputstring/Expression/PropertyInfoargument isnull.This especially makes implicit conversions to
Fieldmore easily usable without having to apply the null-forgiveness operator (!) all the time.FieldValue.IsLazyDocument,FieldValue.IsCompositeand the corresponding members in theFieldValue.ValueKindenum. These values were not used anymore for quite some time.Non-breaking user facing changes:
index,id, ...) which previously could only be initialized from the constructor.Later/bonus:
ISelfTwoWaySerializable(used for source-body/array/dictionary requests/responses).ISelfSerializable(used for descriptors).ElasticsearchClient.SettingsTable(used for descriptors and in some other places). Replace withContextProvideraccess.IsADictionaryConverterFactorywith case-by-case converters.Related to:
All variants now have either a public
string Type(internal, external, untyped) property or publicVariantType/Variantproperties (container). For non-exhaustive container variants like e.g.Aggregation, these properties are settable.