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.ValueSpan
access instead of allocating intermediatestring
values (e.g. when comparing property names or parsing/formatting values).JsonEncodedText
constants for compile-time constant literals (e.g. property names).Utf8Parser
/Utf8Formatter
for primitive value conversions.SourceMarker<T>
should only (de-)serialize the wrapped type to prevent unnecessary allocations.IStreamSerializable
)IStreamSerializable
)SortOptions
special caseBreaking user facing changes:
Field.Format
property and corresponding constructor and inferrer overloads.This property was not used anymore for quite some time (got replaced by the
FieldAndFormat
type).Field
/Fields
static factory methods and conversion operators no longer return nullable references but throw exceptions instead (Field
) if the inputstring
/Expression
/PropertyInfo
argument isnull
.This especially makes implicit conversions to
Field
more easily usable without having to apply the null-forgiveness operator (!
) all the time.FieldValue.IsLazyDocument
,FieldValue.IsComposite
and the corresponding members in theFieldValue.ValueKind
enum. 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 withContextProvider
access.IsADictionaryConverterFactory
with case-by-case converters.Related to:
All variants now have either a public
string Type
(internal, external, untyped) property or publicVariantType/Variant
properties (container). For non-exhaustive container variants like e.g.Aggregation
, these properties are settable.