diff --git a/dotnet/src/webdriver/BiDi/Json/Converters/OptionalConverter.cs b/dotnet/src/webdriver/BiDi/Json/Converters/OptionalConverter.cs index 0fa368adce1f9..11ef1d89c1820 100644 --- a/dotnet/src/webdriver/BiDi/Json/Converters/OptionalConverter.cs +++ b/dotnet/src/webdriver/BiDi/Json/Converters/OptionalConverter.cs @@ -33,7 +33,7 @@ public override Optional Read(ref Utf8JsonReader reader, Type typeToConvert, return new Optional(default!); } - T value = JsonSerializer.Deserialize(ref reader, options)!; + T value = JsonSerializer.Deserialize(ref reader, options.GetTypeInfo())!; return new Optional(value); } @@ -41,7 +41,7 @@ public override void Write(Utf8JsonWriter writer, Optional value, JsonSeriali { if (value.TryGetValue(out var optionalValue)) { - JsonSerializer.Serialize(writer, optionalValue, options); + JsonSerializer.Serialize(writer, optionalValue, options.GetTypeInfo()); } else { diff --git a/dotnet/src/webdriver/BiDi/Json/JsonExtensions.cs b/dotnet/src/webdriver/BiDi/Json/JsonExtensions.cs index 11860c023aec8..83165d26849b9 100644 --- a/dotnet/src/webdriver/BiDi/Json/JsonExtensions.cs +++ b/dotnet/src/webdriver/BiDi/Json/JsonExtensions.cs @@ -55,6 +55,11 @@ public static string GetDiscriminator(this ref Utf8JsonReader reader, string nam public static JsonTypeInfo GetTypeInfo(this JsonSerializerOptions options) { - return (JsonTypeInfo)options.GetTypeInfo(typeof(T)); + if (options.TryGetTypeInfo(typeof(T), out JsonTypeInfo? typeInfo)) + { + return (JsonTypeInfo)typeInfo; + } + + throw new JsonException($"Type info for '{typeof(T).FullName}' is not available in the serializer context. Ensure the type is included in the JsonSerializerContext."); } }