首頁 > 後端開發 > C++ > Json.Net 可以在不修改原始程式碼的情況下配置私有 Setter 行為嗎?

Json.Net 可以在不修改原始程式碼的情況下配置私有 Setter 行為嗎?

Barbara Streisand
發布: 2025-01-05 06:28:12
原創
441 人瀏覽過

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

在Json.Net 中配置私有setter 行為

雖然Json.Net 提供了一個屬性來尋址私有setter,但此功能的預設選項經常受到追捧。在沒有修改原始程式碼的情況下,出現了問題:是否有可配置的設定來實現此行為?

答案

選項1:使用[ JsonProperty] 屬性

而不是依賴於特定屬性,只需使用[ JsonProperty] 屬性用於在反序列化期間填入唯讀屬性。範例:

[JsonProperty]
public Guid? ClientId { get; private set; }
登入後複製

選項2:基於建構子的解決方案

另一個方法是建立一個參數與私有屬性相符的建構子:

public class Foo
{
    public string Bar { get; }

    public Foo(string bar)
    {
        Bar = bar;
    }
}
登入後複製

這可以達到以下目的:

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

var deserialized = JsonConvert.DeserializeObject<Foo>(json);
Console.WriteLine(deserialized.Bar); // Stack Overflow
登入後複製

這種方法的優點包括:

  • 不需要屬性的歸屬。
  • 與兩者的兼容性 { get;私人套裝; } 和 { 得到; }.

以上是Json.Net 可以在不修改原始程式碼的情況下配置私有 Setter 行為嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板