在 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
这种方法的优点包括:
以上是Json.Net 可以在不修改源代码的情况下配置私有 Setter 行为吗?的详细内容。更多信息请关注PHP中文网其他相关文章!