JsonNumberHandlingAttribute nelle proprietà delle raccolte
In .NET 6 è stata introdotta una piccola modifica che causa un'interruzione per quanto riguarda l'attributo JsonNumberHandlingAttribute. Se si applica l'attributo a una proprietà che rappresenta una raccolta di valori non numerici e si tenta di serializzarla o deserializzarla, viene generata un'eccezione InvalidOperationException. L'attributo è valido solo per le proprietà che rappresentano raccolte di tipi numerici, ad esempio:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }
Comportamento precedente
Anche se veniva ignorato durante la serializzazione, JsonNumberHandlingAttribute poteva essere applicato a proprietà che rappresentavano raccolte di tipi non numerici. Ad esempio:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }
Nuovo comportamento
A partire da .NET 6, se si applica l'attributo JsonNumberHandlingAttribute a una proprietà che rappresenta una raccolta di valori non numerici e si tenta di serializzarla o deserializzarla, viene generata un'eccezione InvalidOperationException.
Versione di introduzione
.NET 6
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità binaria.
Motivo della modifica
Questa modifica è un effetto collaterale di un'ottimizzazione delle prestazioni per la funzionalità di gestione dei numeri.
Azione consigliata
Rimuovere l'attributo JsonNumberHandlingAttribute dalle proprietà di raccolte incompatibili.
API interessate
Tutti i metodi di serializzazione e deserializzazione System.Text.Json.JsonSerializer.