JsonNumberHandlingAttribute för samlingsegenskaper

En mindre icke-bakåtkompatibel ändring introducerades i .NET 6 när det gäller attributet JsonNumberHandlingAttribute . Om du använder attributet för en egenskap som är en samling icke-talvärden och försöker serialisera eller deserialisera egenskapen genereras en InvalidOperationException . Attributet är endast giltigt för egenskaper som är samlingar av nummertyper, till exempel:

[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }

Tidigare beteende

Även om den ignorerades under serialiseringen kan JsonNumberHandlingAttribute den tillämpas på egenskaper som var samlingar av icke-nummertyper. Till exempel:

[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }

Nytt beteende

Från och med .NET 6, om du applicerar JsonNumberHandlingAttribute på en egenskap som är en samling av icke-talvärden och försöker serialisera eller deserialisera egenskapen, genereras en InvalidOperationException.

Version lanserad

.NET 6

Typ av brytande ändring

Den här ändringen kan påverka binär kompatibilitet.

Orsak till ändring

Den här ändringen var en bieffekt av en prestandaoptimering för funktionen för nummerhantering.

JsonNumberHandlingAttribute Ta bort attributet från inkompatibla samlingsegenskaper.

Berörda API:er

System.Text.Json.JsonSerializer Alla serialiserings- och deserialiseringsmetoder.