Heim >Backend-Entwicklung >C++ >Kann Json.Net das Verhalten privater Setter konfigurieren, ohne den Quellcode zu ändern?

Kann Json.Net das Verhalten privater Setter konfigurieren, ohne den Quellcode zu ändern?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 06:28:12425Durchsuche

Can Json.Net Configure Private Setter Behavior Without Modifying Source Code?

Konfigurieren des Verhaltens privater Setter in Json.Net

Während Json.Net ein Attribut zum Ansprechen privater Setter bietet, ist dies eine Standardoption für diese Funktionalität ist oft gefragt. In Ermangelung von Änderungen am Quellcode stellt sich die Frage: Gibt es eine konfigurierbare Einstellung, um dieses Verhalten zu erreichen?

Antwort

Option 1: Verwendung der [ JsonProperty]-Attribut

Anstatt sich auf ein bestimmtes Attribut zu verlassen, verwenden Sie einfach das [JsonProperty]-Attribut. Das Attribut dient dazu, schreibgeschützte Eigenschaften während der Deserialisierung zu füllen. Ein Beispiel:

[JsonProperty]
public Guid? ClientId { get; private set; }

Option 2: Konstruktorbasierte Lösung

Ein alternativer Ansatz besteht darin, einen Konstruktor mit einem Parameter zu erstellen, der der privaten Eigenschaft entspricht:

public class Foo
{
    public string Bar { get; }

    public Foo(string bar)
    {
        Bar = bar;
    }
}

Dies ermöglicht Folgendes:

string json = "{ \"bar\": \"Stack Overflow\" }";

var deserialized = JsonConvert.DeserializeObject<Foo>(json);
Console.WriteLine(deserialized.Bar); // Stack Overflow

Die Vorteile dieses Ansatzes include:

  • Es ist keine Zuordnung von Eigenschaften erforderlich.
  • Kompatibilität mit beiden { get; privates Set; } und { get; }.

Das obige ist der detaillierte Inhalt vonKann Json.Net das Verhalten privater Setter konfigurieren, ohne den Quellcode zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn