.NET 8 JsonSerializerOptions als readonly markieren
Erfahren Sie, wie Sie in .NET 8 mit MakeReadOnly JsonSerializerOptions-Instanzen schreibgeschützt machen und über IsReadOnly prüfen, ob sie es sind.
Ab .NET 8 können Sie JsonSerializerOptions-Instanzen als schreibgeschützt markieren und so weitere Änderungen verhindern. Um eine Instanz einzufrieren, rufen Sie einfach MakeReadOnly auf der Options-Instanz auf.
Hier ein Beispiel:
var options = new JsonSerializerOptions
{
AllowTrailingCommas = true,
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseUpper,
PreferredObjectCreationHandling = JsonObjectCreationHandling.Populate,
};
options.MakeReadOnly();
Ob eine Instanz bereits eingefroren wurde, prüfen Sie über die Eigenschaft IsReadOnly.
options.IsReadOnly
Wer versucht, eine JsonSerializerOptions-Instanz nach dem Markieren als readonly noch zu verändern, erhält eine InvalidOperationException:
Unhandled exception. System.InvalidOperationException: This JsonSerializerOptions instance is read-only or has already been used in serialization or deserialization.
at System.Text.Json.ThrowHelper.ThrowInvalidOperationException_SerializerOptionsReadOnly(JsonSerializerContext context)
at System.Text.Json.JsonSerializerOptions.VerifyMutable()
Überladung MakeReadOnly(bool populateMissingResolver)
Wenn populateMissingResolver als true übergeben wird, ergänzt die Methode bei Bedarf den standardmäßigen reflection-basierten Resolver in Ihren JsonSerializerOptions. Vorsicht beim Einsatz dieser Methode in trimmed / Native AOT-Anwendungen: Sie zieht die reflection-bezogenen Assemblies in Ihren Build.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.