Rumah >pembangunan bahagian belakang >C++ >Bolehkah Json.Net Mengkonfigurasi Gelagat Penetap Peribadi Tanpa Mengubah Suai Kod Sumber?

Bolehkah Json.Net Mengkonfigurasi Gelagat Penetap Peribadi Tanpa Mengubah Suai Kod Sumber?

Barbara Streisand
Barbara Streisandasal
2025-01-05 06:28:12471semak imbas

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

Mengkonfigurasi Gelagat Penetap Peribadi dalam Json.Net

Walaupun Json.Net menawarkan atribut untuk menangani penetap peribadi, pilihan lalai untuk fungsi ini sering dicari. Sekiranya tiada pengubahsuaian kod sumber, persoalan timbul: adakah terdapat tetapan yang boleh dikonfigurasikan untuk mencapai tingkah laku ini?

Jawapan

Pilihan 1: Menggunakan [ JsonProperty] Atribut

Daripada bergantung pada atribut tertentu, hanya menggunakan Atribut [JsonProperty] berfungsi untuk mengisi sifat baca sahaja semasa penyahserikatan. Contoh:

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

Pilihan 2: Penyelesaian Berasaskan Pembina

Pendekatan alternatif melibatkan mencipta pembina dengan parameter yang sepadan dengan harta persendirian:

public class Foo
{
    public string Bar { get; }

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

Ini membolehkan perkara berikut:

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

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

Kelebihan pendekatan ini termasuk:

  • Tiada atribusi hartanah diperlukan.
  • Keserasian dengan kedua-duanya { dapatkan; set peribadi; } dan { dapatkan; }.

Atas ialah kandungan terperinci Bolehkah Json.Net Mengkonfigurasi Gelagat Penetap Peribadi Tanpa Mengubah Suai Kod Sumber?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn