diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Next/DoubleWithFractionalPortionConverter.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Next/DoubleWithFractionalPortionConverter.cs index cc58e2cde99..2b01ed6b350 100644 --- a/src/Elastic.Clients.Elasticsearch/_Shared/Next/DoubleWithFractionalPortionConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/_Shared/Next/DoubleWithFractionalPortionConverter.cs @@ -39,7 +39,13 @@ public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS return reader.GetDouble(); } +#if !NETFRAMEWORK if (options.NumberHandling.HasFlag(JsonNumberHandling.AllowNamedFloatingPointLiterals)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) == + (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) +#endif { if (reader.ValueTextEquals(NaN)) { @@ -57,7 +63,13 @@ public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS } } +#if !NETFRAMEWORK if (!options.NumberHandling.HasFlag(JsonNumberHandling.AllowReadingFromString)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.AllowReadingFromString) != + (int)JsonNumberHandling.AllowReadingFromString) +#endif { return reader.GetDouble(); } @@ -71,7 +83,13 @@ public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOptions options) { +#if !NETFRAMEWORK if (options.NumberHandling.HasFlag(JsonNumberHandling.AllowNamedFloatingPointLiterals)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) == + (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) +#endif { if (double.IsNaN(value)) { @@ -92,7 +110,13 @@ public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOp } } +#if !NETFRAMEWORK if (options.NumberHandling.HasFlag(JsonNumberHandling.WriteAsString)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.WriteAsString) == + (int)JsonNumberHandling.WriteAsString) +#endif { throw new NotImplementedException("'JsonNumberHandling.WriteAsString' is currently not supported."); } diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Next/SingleWithFractionalPortionConverter.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Next/SingleWithFractionalPortionConverter.cs index a43138d9ab7..7e9b51cfc91 100644 --- a/src/Elastic.Clients.Elasticsearch/_Shared/Next/SingleWithFractionalPortionConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/_Shared/Next/SingleWithFractionalPortionConverter.cs @@ -39,7 +39,13 @@ public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe return reader.GetSingle(); } +#if !NETFRAMEWORK if (options.NumberHandling.HasFlag(JsonNumberHandling.AllowNamedFloatingPointLiterals)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) == + (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) +#endif { if (reader.ValueTextEquals(NaN)) { @@ -57,7 +63,13 @@ public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe } } +#if !NETFRAMEWORK if (!options.NumberHandling.HasFlag(JsonNumberHandling.AllowReadingFromString)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.AllowReadingFromString) != + (int)JsonNumberHandling.AllowReadingFromString) +#endif { return reader.GetSingle(); } @@ -71,7 +83,13 @@ public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOptions options) { +#if !NETFRAMEWORK if (options.NumberHandling.HasFlag(JsonNumberHandling.AllowNamedFloatingPointLiterals)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) == + (int)JsonNumberHandling.AllowNamedFloatingPointLiterals) +#endif { if (float.IsNaN(value)) { @@ -92,7 +110,13 @@ public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOpt } } +#if !NETFRAMEWORK if (options.NumberHandling.HasFlag(JsonNumberHandling.WriteAsString)) +#else + // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework. + if (((int)options.NumberHandling & (int)JsonNumberHandling.WriteAsString) == + (int)JsonNumberHandling.WriteAsString) +#endif { throw new NotImplementedException("'JsonNumberHandling.WriteAsString' is currently not supported."); }