Start Debugging
2023-09-11 Aktualisiert 2023-11-05 csharpdotnetdotnet-8 Edit on GitHub

.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.

< Zurück