ホームページ >バックエンド開発 >C++ >Json.Net はソース コードを変更せずにプライベート セッターの動作を構成できますか?

Json.Net はソース コードを変更せずにプライベート セッターの動作を構成できますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-05 06:28:12470ブラウズ

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

Json.Net でのプライベート セッターの動作の構成

Json.Net ではプライベート セッターに対応する属性が提供されていますが、これはこの機能のデフォルト オプションです求められることが多いです。ソース コードに変更がない場合、次のような疑問が生じます: この動作を実現するための構成可能な設定はありますか?

回答

オプション 1: [ JsonProperty] Attribute

特定の属性に依存する代わりに、 [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 はソース コードを変更せずにプライベート セッターの動作を構成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。