JsonNumberHandlingAttribute we właściwościach kolekcji
W przypadku atrybutu wprowadzono niewielką zmianę powodującą JsonNumberHandlingAttribute niezgodność na platformie .NET 6. Jeśli zastosujesz atrybut do właściwości, która jest kolekcją wartości innych niż liczba i spróbujesz serializować lub deserializować właściwość, InvalidOperationException zostanie zgłoszony element . Atrybut jest prawidłowy tylko dla właściwości, które są kolekcjami typów liczbowych, na przykład:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }
Poprzednie zachowanie
Chociaż został zignorowany podczas serializacji, JsonNumberHandlingAttribute można go zastosować do właściwości, które były kolekcjami typów innych niż liczba. Na przykład:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }
Nowe zachowanie
Począwszy od platformy .NET 6, jeśli stosujesz się JsonNumberHandlingAttribute do właściwości, która jest kolekcją wartości innych niż liczba i próbuje serializować lub deserializować właściwość, zgłaszana jest wartość .InvalidOperationException
Wprowadzona wersja
.NET 6
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna wprowadzenia zmiany
Ta zmiana była efektem ubocznym optymalizacji wydajności dla funkcji obsługi numerów.
Zalecana akcja
JsonNumberHandlingAttribute Usuń atrybut z niezgodnych właściwości kolekcji.
Dotyczy interfejsów API
System.Text.Json.JsonSerializer Wszystkie metody serializacji i deserializacji.