@@ -39,7 +39,13 @@ public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
3939 return reader . GetDouble ( ) ;
4040 }
4141
42+ #if ! NETFRAMEWORK
4243 if ( options . NumberHandling . HasFlag ( JsonNumberHandling . AllowNamedFloatingPointLiterals ) )
44+ #else
45+ // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework.
46+ if ( ( ( int ) options . NumberHandling & ( int ) JsonNumberHandling . AllowNamedFloatingPointLiterals ) ==
47+ ( int ) JsonNumberHandling . AllowNamedFloatingPointLiterals )
48+ #endif
4349 {
4450 if ( reader . ValueTextEquals ( NaN ) )
4551 {
@@ -57,7 +63,13 @@ public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
5763 }
5864 }
5965
66+ #if ! NETFRAMEWORK
6067 if ( ! options . NumberHandling . HasFlag ( JsonNumberHandling . AllowReadingFromString ) )
68+ #else
69+ // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework.
70+ if ( ( ( int ) options . NumberHandling & ( int ) JsonNumberHandling . AllowReadingFromString ) !=
71+ ( int ) JsonNumberHandling . AllowReadingFromString )
72+ #endif
6173 {
6274 return reader . GetDouble ( ) ;
6375 }
@@ -71,7 +83,13 @@ public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
7183
7284 public override void Write ( Utf8JsonWriter writer , double value , JsonSerializerOptions options )
7385 {
86+ #if ! NETFRAMEWORK
7487 if ( options . NumberHandling . HasFlag ( JsonNumberHandling . AllowNamedFloatingPointLiterals ) )
88+ #else
89+ // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework.
90+ if ( ( ( int ) options . NumberHandling & ( int ) JsonNumberHandling . AllowNamedFloatingPointLiterals ) ==
91+ ( int ) JsonNumberHandling . AllowNamedFloatingPointLiterals )
92+ #endif
7593 {
7694 if ( double . IsNaN ( value ) )
7795 {
@@ -92,7 +110,13 @@ public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOp
92110 }
93111 }
94112
113+ #if ! NETFRAMEWORK
95114 if ( options . NumberHandling . HasFlag ( JsonNumberHandling . WriteAsString ) )
115+ #else
116+ // Optimize hot-path for performance since `HasFlag` causes boxing on .NET Framework.
117+ if ( ( ( int ) options . NumberHandling & ( int ) JsonNumberHandling . WriteAsString ) ==
118+ ( int ) JsonNumberHandling . WriteAsString )
119+ #endif
96120 {
97121 throw new NotImplementedException ( "'JsonNumberHandling.WriteAsString' is currently not supported." ) ;
98122 }
0 commit comments